Почему на минимальное (не жадное) совпадение влияет конец строкового символа '$'?

РЕДАКТИРОВАТЬ: удалить исходный пример, потому что он вызвал дополнительные ответы. также исправлен заголовок.

Возникает вопрос, почему присутствие символа «$» в регулярном выражении влияет на жадность выражения:

Вот более простой пример:

>>> import re
>>> str = "baaaaaaaa"
>>> m = re.search(r"a+$", str)
>>> m.group()
'aaaaaaaa'
>>> m = re.search(r"a+?$", str)
>>> m.group()
'aaaaaaaa'

Знак «?» кажется, ничего не делает. Обратите внимание на то, что когда "$" удаляется, тогда появляется "?" соблюдается:

>>> m = re.search(r"a+?", str)
>>> m.group()
'a'

РЕДАКТИРОВАТЬ: Другими словами, «a +? $» Соответствует ВСЕМ, а не только последнему, это не то, что я ожидал. Вот описание регулярного выражения "+?" из документации python : "Adding '?' after the qualifier makes it perform the match in non-greedy or minimal fashion; as few characters as possible will be matched."

This does not seem to be the case in this example: the string "a" matches the regex "a+?$", so why isn't the match for the same regex on the string "baaaaaaa" just a single a (the rightmost one)?

7
задан Jk1 6 July 2014 в 09:40
поделиться