我有一个正则表达式,用于搜索包含'.00.'
或'.11.'
的字符串,如下所示:
.*\.(00|11)\..*
我想要做的是将所有与该模式匹配的匹配项替换为'X00X'
或'X11X'
。例如,字符串'.00..0..11.'
将导致'X00X.0.X11X'
。
我正在研究Python re.sub方法,并且不确定如何有效地执行此操作。返回的匹配对象仅在第一次出现时匹配,因此无法正常工作。有什么建议?我应该只使用字符串替换此任务吗?感谢。
答案 0 :(得分:15)
re.sub()
(Python 2和Python 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)