重新编译搜索不会显示完整的字符串

时间:2018-01-21 13:45:47

标签: python regex-greedy

在文本中,我想查找文本是否包含以下字符串:

之后

"http://p.thisistheurl.com/v/"直到"jpg"

所以这是我写的python代码:

asdf = 'http://p.thisistheurl.com/v/adzl25/4321567/543276123/865.jpg'

regex = re.compile(r'http://p.thisistheurl.com/v/(.)*jpg')

regex.search(asdf)

<_sre.SRE_Match object; span=(0, 60), match='http://p.thisistheurl.com/v/adzl25/4321567/543276'>

如您所见,结果未显示"jpg"的整个字符串。为什么不起作用?

1 个答案:

答案 0 :(得分:1)

我不认为match=之后显示的字符实际上是匹配的字符串的完整内容。它可能只是在50个字符后切断。

cpython's implementation of SRE_Match.__repr__,情况确实如此:50R右边有吸烟枪。

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

如果你访问实际匹配的字符串,而不是从匹配对象的打印表示中检查它,它会一直到jpg

>>> import re
>>> asdf = 'http://p.thisistheurl.com/v/adzl25/4321567/543276123/865.jpg'
>>> regex = re.compile(r'http://p.thisistheurl.com/v/(.)*jpg')
>>> print(regex.search(asdf).group(0))
http://p.thisistheurl.com/v/adzl25/4321567/543276123/865.jpg