如何使用正则表达式仅替换括号内的内容?
String = "This is my string [123]"
我想用456替换123
Desired_String = "This is my string [456]"
我的尝试:
regex = '.*\[(.*?)\].*'
re.sub(regex,'456',String)
>> 456
我不确定要使用什么正则表达式,以便用456替换123。
答案 0 :(得分:5)
如果你修改你的正则表达式和你的替换字符串,你得到它:
regex = '\[.*?\]'
re.sub(regex,'[456]',String)
您无需将整个字符串与.*
匹配,以便替换工作。
此外,这里并不完全需要,但是生成正则表达式字符串是一种很好的做法:
regex = r'\[.*?\]'
^
另一个选择是使用否定的类,这也会更快!
regex = r'[^\[\]]+(?=\])'
re.sub(regex,'456',String)
可能有点令人困惑,但[^\[\]]+
匹配除[
和]
之外的任何字符。
答案 1 :(得分:3)
或者,您可以使用前瞻和后瞻断言(documentation):
>>> regex = r'(?<=\[).*?(?=\])'
>>> re.sub(regex, '456', 'This is my string [123]')
'This is my string [456]'