Python在_sre.SRE_Match输出中的“匹配”行?它可以显示完整匹配吗?

时间:2018-02-07 23:54:57

标签: python regex match

使用python 3:

In [275]: blah = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg"

In [276]: pat = re.compile("([a-z]{2,9999})")

In [277]: data = re.search(pat,blah)

In [278]: data
Out[278]: <_sre.SRE_Match object; span=(0, 125), match='fffffffffffffffffffffffffffffffffffffffffffffffff>

match=''是否可以打印出整个字符串?即一直到最后的'g'

3 个答案:

答案 0 :(得分:1)

有了这个,你就不会限制自己的重复上限:

import re

blah = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg"

r = re.compile(r'[a-z](.)\1{2,}') # no upper limit
try:
    re.search(r, blah).group()
except AttributeError:
    pass  # whatever you want to do when there is no match

答案 1 :(得分:1)

不,这是不可能的。该长度在匹配对象的repr方法的格式字符串中进行了硬编码,并不是为了捕获匹配字符串的全长。

除了你编译自己的CPython版本(或者你正在使用的任何Python风格),修改后的match_repr match对象的表示精度。默认精度为50:

result = PyUnicode_FromFormat(
        "<%s object; span=(%d, %d), match=%.50R>",
        Py_TYPE(self)->tp_name,
        self->mark[0], self->mark[1], group0);

正如其他人所建议的那样,只需使用匹配对象的group方法来访问完整匹配的字符串。

答案 2 :(得分:0)

你可能正在寻找.group ...

import re
blah = "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffg"
pat = re.compile("([a-z]{2,99})")
data = re.search(pat,blah)
if data:
    data.group(0) # returns 'fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff'
else:
    pass # do something when the string was not found!

请参阅: https://docs.python.org/3.5/library/re.html#re.match.group

Why won't re.groups() give me anything for my one correctly-matched group?