>>> text =\
... """xyxyxy testmatch0
... xyxyxy testmatch1
... xyxyxy
... whyisthismatched1
... xyxyxy testmatch2
... xyxyxy testmatch3
... xyxyxy
... whyisthismatched2
... """
>>> re.findall("^\s*xyxyxy\s+([a-z0-9]+).*$", text, re.MULTILINE)
[u'testmatch0', u'testmatch1', u'whyisthismatched1', u'testmatch2', u'testmatch3', u'whyisthismatched2']
Так что мои ожидания состоят в том, чтобы не соответствовать строкам, содержащим «whyisthismatched».python re.findall weird behavior
Питон повторно документации говорится следующее:
(. Dot) В режиме по умолчанию, это соответствует любому символу, за исключением новой строки. Если флаг DOTALL указан, это соответствует любому знаку , включая новую строку.
Мой вопрос будет, если это действительно ожидаемое поведение или ошибка. Если ожидаются, кто-то пожалуйста, объясните, почему эти линии сопоставления и как я должен изменить свой шаблон, чтобы получить поведение я ожидаю:
[u'testmatch0', u'testmatch1', u'testmatch2', u'testmatch3']
новой строки могут быть включены в \ s с re.MULTILINE ... Я думаю, что по крайней мере –