使用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'
?
答案 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?