使用python regex替换其间的内容

时间:2013-05-08 22:37:34

标签: python regex

我有一个字符串:

'[text], text, {text}, itextm'

我最终应该:

'[replaced], text, {replaced}, ireplacedm'

如何使用python re模块执行此操作? 谢谢!

3 个答案:

答案 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