正则表达式子方法不会替换python正则表达式中的所有匹配项

时间:2019-05-23 15:24:17

标签: regex python-3.x

我试图使用正则表达式子方法,但是它不能代替所有出现的方法。请参见下面的代码。我想将所有出现的“ &&”替换为“和”。表达式中有一个前导空间和尾随空间。

location

请帮助。

2 个答案:

答案 0 :(得分:2)

由于匹配项重叠,因此您可以在正则表达式中使用环顾四周:

(?<= )&&(?= )

代码:

>>> string =" && && 7978888 && 896"
>>> tmp = re.sub(r"(?<= )&&(?= )", "and", string)
>>> tmp
' and and 7978888 and 896'

此处使用后向和前向断言使regex引擎仅断言&&之前和之后的空间,而不会实际移动当前位置。

答案 1 :(得分:0)

此处的混乱之处在于,两个&&之间只有一个空格。 如果有两个空格,那么它将按预期工作,但是为什么要在正则表达式模式中包含空格呢? “(&&)”不能很好地工作吗?

>>> import re
>>> string = " && && 7978888 && 896"
>>> tmp = re.sub(r"&&", "and", string)
>>> tmp
' and && 7978888 and 896'

如果这还不够,您还需要遵循哪些其他独特的约束条件?