考虑以下示例
>>> import sys, re
>>> sys.version
'3.11.5 (main, Sep 11 2023, 13:23:44) [GCC 11.2.0]'
>>> re.__version__
'2.2.1'
>>> re.findall('a{1,4}', 'aaaaa')
['aaaa', 'a']
>>> re.findall('a{1,4}?', 'aaaaa')
['a', 'a', 'a', 'a', 'a']
>>> re.findall('a{1,4}?$', 'aaaaa')
['aaaa']
>>>
我希望在最后的结果中看到一个
'a'
,但我却得到了 'aaaa'
。这种行为如何解释?
给定的模式应该返回最后 4a 的“aaaa”。
a{1,4}?$
a # matches the character a
{1-4}? # matches the previous "a" character 1-4 times non-greedy
$ # searches for the pattern at end of line.