Python没有正确解释正则表达式
我有以下代码:Python没有正确解释正则表达式,python,regex,Python,Regex,我有以下代码: import re regex = re.compile("(.+?)\1+") results = regex.findall("FFFFFFF") print(results) 预期结果是: ['F'] 根据,正则表达式正在做它应该做的事情(寻找最短的重复子字符串)。但是在python中尝试正则表达式时。为什么会这样?试试看 regex = re.compile(r"(.+?)\1+") 为什么不起作用?你可以通过阅读理解 print r"(.+?)\1+" prin
import re
regex = re.compile("(.+?)\1+")
results = regex.findall("FFFFFFF")
print(results)
预期结果是:
['F']
根据,正则表达式正在做它应该做的事情(寻找最短的重复子字符串)。但是在python中尝试正则表达式时。为什么会这样?试试看
regex = re.compile(r"(.+?)\1+")
为什么不起作用?你可以通过阅读理解
print r"(.+?)\1+"
print "(.+?)\1+"
请参见使用原始字符串:
>>> re.findall("(.+?)\1+", "FFFFFFF")
[]
>>> re.findall(r"(.+?)\1+", "FFFFFFF")
['F']
>>>
原始字符串文字,即前缀为'r'
的字符串文字,使反斜杠被视为文字。反斜杠在其他情况下被视为转义序列
引述自:
正则表达式使用反斜杠字符('\'
)表示
特殊形式或允许使用特殊字符而无需
援引它们的特殊含义
解决方案是将Python的原始字符串表示法用于正则表达式
表达模式;反斜杠不会以任何特殊方式处理
前缀为'r'
的字符串文字。所以r“\n”
是一个两个字符的字符串
包含\'
和'n'
,而“\n”
是一个单字符字符串
包含换行符的。通常模式将用Python表示
使用此原始字符串表示法的代码
使用原始字符串:
regex = re.compile(r"(.+?)\1+")
或者避开反斜杠:
regex = re.compile(r"(.+?)\\1+")
请在此处发布代码,而不仅仅是作为代码板链接。它可能是一个代码板错误。@Tuga:不,在正则表达式引擎将其解释为转义之前,字符串中的
\1
被Python解释为转义。@MartijnPieters注意!另请参见Python正则表达式Howto。