【发布时间】:2020-06-07 20:41:40
【问题描述】:
我正在尝试使用正则表达式查找 && 并使用 Python 将其替换为 and。
这是我的正则表达式:
r"(?=( && ))"
测试输入:x&& &&& && && x || | ||\|| x,预期输出:x&& &&& and and x or | ||\|| x。我的 Python 代码:
import re
input = "x&& &&& && && x || | ||\|| x"
result = re.sub(r"(?=( && ))", " and ", input)
print(result)
我的输出是:x&& &&& and && and && x || | ||\|| x。这实际上是有效的,但它不是替换它留下原始模式,只是在找到模式时添加我的替换字符串。这真是令人困惑。
【问题讨论】:
-
re.sub(r"(?<!\S)&&(?!\S)", "and", text)?您只有一个重叠的尾随空格。 -
重叠可以通过前瞻来控制,但是您可以将重叠限制为单个结束字符,即
[ ]&&(?=[ ])替换`和`这样endchar可以在需要时重复使用(重叠)相邻的`&&`。当然,您可以变得花哨,而且我非常棒,并且可以前后颠倒断言,但这取决于您 -
这个网站上有数百个重叠的正则表达式示例,看起来有点,是吗?