Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何用正则表达式替换多个重叠模式?_Python_Regex - Fatal编程技术网

Python 如何用正则表达式替换多个重叠模式?

Python 如何用正则表达式替换多个重叠模式?,python,regex,Python,Regex,我想用和替换所有出现的& 例如,x&&&&&&应该变成x&&&and 我尝试了re.sub('&&','and','x&&&&&&&&&'),但是没有成功,第一个&&&已经使用了空格,所以第二个不匹配 然后我想到了非捕获组,并尝试了,但再次失败 我怎样才能解决这个问题 (?:^|(?<=\s))&&(?=\s|$) 输出:'x&&and'您可以在此处使用非单词边界 >>> re.sub(r'\B&&\B', 'and', 'x&&

我想用
替换所有出现的
&

例如,
x&&&&&&
应该变成
x&&&and

我尝试了
re.sub('&&','and','x&&&&&&&&&')
,但是没有成功,第一个
&&&
已经使用了空格,所以第二个不匹配

然后我想到了非捕获组,并尝试了,但再次失败

我怎样才能解决这个问题

(?:^|(?<=\s))&&(?=\s|$)

输出:
'x&&and'

您可以在此处使用非单词边界

>>> re.sub(r'\B&&\B', 'and', 'x&& && &&')
'x&& and and'

这似乎是一个非常古老的帖子。任何寻找替代方法的人也可以使用下面的正则表达式

re.sub(r"(\s)(\&\&)(?=(\s))", r"\1and", a)

此代码的输出是
'x&&and'
,而不是
'x&&and'
@pabtore现在有一个打字错误。请检查
re.sub(r"(\s)(\&\&)(?=(\s))", r"\1and", a)