python – How to input a regex in string.replace?
python – How to input a regex in string.replace?
This tested snippet should do it:
import re
line = re.sub(r</?[d+>, , line)
Edit: Heres a commented version explaining how it works:
line = re.sub(r
(?x) # Use free-spacing mode.
< # Match a literal <
/? # Optionally match a /
[ # Match a literal [
d+ # Match one or more digits
> # Match a literal >
, , line)
Regexes are fun! But I would strongly recommend spending an hour or two studying the basics. For starters, you need to learn which characters are special: metacharacters which need to be escaped (i.e. with a backslash placed in front – and the rules are different inside and outside character classes.) There is an excellent online tutorial at: www.regular-expressions.info. The time you spend there will pay for itself many times over. Happy regexing!
str.replace()
does fixed replacements. Use re.sub()
instead.
python – How to input a regex in string.replace?
I would go like this (regex explained in comments):
import re
# If you need to use the regex more than once it is suggested to compile it.
pattern = re.compile(r</{0,}[d+>)
# </{0,}[d+>
#
# Match the character “<” literally «<»
# Match the character “/” literally «/{0,}»
# Between zero and unlimited times, as many times as possible, giving back as needed (greedy) «{0,}»
# Match the character “[” literally «[»
# Match a single digit 0..9 «d+»
# Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
# Match the character “>” literally «>»
subject = this is a paragraph with<[1> in between</[1> and then there are cases ... where the<[99> number ranges from 1-100</[99>.
and there are many other lines in the txt files
with<[3> such tags </[3>
result = pattern.sub(, subject)
print(result)
If you want to learn more about regex I recomend to read Regular Expressions Cookbook by Jan Goyvaerts and Steven Levithan.