正则表达式“{m, n}?$”的意外行为

问题描述 投票:0回答:1

考虑以下示例

>>> 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'
。这种行为如何解释?

regex python-re
1个回答
0
投票

给定的模式应该返回最后 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.
© www.soinside.com 2019 - 2024. All rights reserved.