我有一个字符串:
'[text], text, {text}, itextm'
我最终应该:
'[replaced], text, {replaced}, ireplacedm'
如何使用python re模块执行此操作? 谢谢!
答案 0 :(得分:0)
这不完美,因为如果你有[term}more]
之类的设置,它将无法正常工作,但它至少适用于你的例子。
re.sub(r'([[{]).*?([\]}])', r'\1replaced\2', str)
答案 1 :(得分:0)
In [1]: s='[text], text, {text}, itextm'
In [2]: import re
In [3]: re.sub(r'([[{])[^\]}]*',r'\1replaced',s)
Out[3]: '[replaced], text, {replaced}, itextm'
修改强>
啊......我没注意到你的例子的最后一部分ireplacedm
!
现在这适用于您的示例:
In [8]: re.sub(r'([^ ,])text([^ ,])',r'\1replaced\2',s)
Out[8]: '[replaced], text, {replaced}, ireplacedm'
答案 2 :(得分:0)
您可以使用此模式:
import re
pattern = '(?<=(\[)|(\{)|([a-z])|.)text(?=(?(1)]|(?(2)}|(?(3)|[a-z]))))'
subject = '[text], text, {text}, itextm [text} {text] textus atext'
result = re.sub(pattern, 'replaced', subject)
print result
它测试方形或花括号是否平衡或在开头或结尾至少有一个字母时匹配单词。
结果:
[replaced], text, {replaced}, ireplacedm [text} {text] replacedus areplaced