Nik*_*s R 2 python regex backreference
我想匹配Python文件的文档字符串.例如.
r""" Hello this is Foo
"""
Run Code Online (Sandbox Code Playgroud)
使用只"""应该足够开始.
>>> data = 'r""" Hello this is Foo\n """'
>>> def display(m):
... if not m:
... return None
... else:
... return '<Match: %r, groups=%r>' % (m.group(), m.groups())
...
>>> import re
>>> print display(re.match('r?"""(.*?)"""', data, re.S))
<Match: 'r""" Hello this is Foo\n """', groups=(' Hello this is Foo\n ',)>
>>> print display(re.match('r?(""")(.*?)\1', data, re.S))
None
Run Code Online (Sandbox Code Playgroud)
有人可以向我解释为什么第一个表达式匹配而另一个不匹配?
您正在使用转义序列\1而不是反向引用\1.
您可以通过更改为转义\之前来解决此问题1.
print display(re.match('r?(""")(.*?)\\1', data, re.S))
Run Code Online (Sandbox Code Playgroud)
你也可以通过使用正则表达式的原始字符串来修复它,没有转义序列.
print display(re.match(r'r?(""")(.*?)\1', data, re.S))
Run Code Online (Sandbox Code Playgroud)