Предполагая, что это просто аннотированный файл, а не XML-файл (используйте решение Acorn в этом случае), вам следует использовать несколько флагов re
, чтобы пропустить новые строки и использовать .
лучше:
>>> src = """<name> James Gold
... </name> said to meet with <name> Mable Helen </name> tomorrow night"""
>>>
>>> [s.strip() for s in re.findall(r'<name>(.*?)</name>', src, re.DOTALL)]
['James Gold', 'Mable Helen']
Затем просто strip
результатов, чтобы получить правильную строку, если она пропустила новую строку. Кроме того, в вашем регулярном выражении отсутствовал оператор ?
: поэтому он потреблял все до последнего тега </name>
.