替换所有与正则表达式

时间:2016-07-02 05:47:52

标签: python regex

我有一个正则表达式,用于搜索包含'.00.''.11.'的字符串,如下所示:

.*\.(00|11)\..*

我想要做的是将所有与该模式匹配的匹配项替换为'X00X''X11X'。例如,字符串'.00..0..11.'将导致'X00X.0.X11X'

我正在研究Python re.sub方法,并且不确定如何有效地执行此操作。返回的匹配对象仅在第一次出现时匹配,因此无法正常工作。有什么建议?我应该只使用字符串替换此任务吗?感谢。

2 个答案:

答案 0 :(得分:15)

re.sub()Python 2Python 3的文档)会替换它找到的所有匹配项,但使用.*可能会导致正则表达式匹配太多(甚至其他.00.等的出现。只需:

In [2]: re.sub(r"\.(00|11)\.", r"X\1X", ".00..0..11.")
Out[2]: 'X00X.0.X11X'

请注意,模式不能重叠:

In [3]: re.sub(r"\.(00|11)\.", r"X\1X", ".00.11.")
Out[3]: 'X00X11.'

答案 1 :(得分:-1)

您也可以尝试一下,

data = "otherway-of-try-b-pool"
data_after_regex = re.sub(r'(-[a-z]-pool)', "", data)

out: otherway-of-try (above regEx removed '-b-pool' part)