Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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,我尝试使用regex在文本中查找如下元素:abs=abs,1=1等等。 我是这样写的: opis="Some text abs=abs sfsdvc" wyn=re.search('([\w]*)=\1',opis) print(wyn.group(0)) 当我在www.regexr.com这样的网站上尝试这段代码时,它没有发现任何问题。 我在python re中做错了什么吗?必须将正则表达式指定为原始字符串r'..' >>> opis="Some text abs=abs

我尝试使用regex在文本中查找如下元素:abs=abs,1=1等等。 我是这样写的:

opis="Some text abs=abs sfsdvc"
wyn=re.search('([\w]*)=\1',opis)
print(wyn.group(0))
当我在www.regexr.com这样的网站上尝试这段代码时,它没有发现任何问题。
我在python re中做错了什么吗?

必须将正则表达式指定为原始字符串
r'..'

>>> opis="Some text abs=abs sfsdvc"
>>> wyn=re.search(r'([\w]*)=\1',opis)
>>> print wyn.group(0)
abs=abs

原始字符串表示法(r“text”)使正则表达式保持正常。如果没有它,正则表达式中的每个反斜杠(“\”)都必须以另一个反斜杠作为前缀才能转义。例如,以下两行代码在功能上相同:

也就是说,如果您不打算使用原始字符串,那么字符串中的所有
\
都必须作为

>>> opis="Some text abs=abs sfsdvc"
>>> wyn=re.search('([\\w]*)=\\1',opis)
>>> print wyn.group(0)
abs=abs
将正则表达式更改为:

re.search(r'(\w+)=\1', opis).group()
          ↑

请注意,这里并不真正需要字符类,
[
]
是多余的,而且如果不想匹配字符串“=”(孤独的等号),
\w+
最好使用
\w+
?@BurhanKhalid,因为它也匹配
这个=那个
。OP希望两边相等。啊,我明白了,=.@BurhanKhalid的每一边都有两个相似的字符串确切地说,
之间的文本将被正则表达式引擎捕获并记住,然后
\1
将匹配捕获的字符串。