我是Python的新手,我在正则表达式方面有些挣扎。如果我有这样的输入:
text = <tag>xyz</tag>\n<tag>abc</tag>
是否可以获得包含以下内容的输出列表:
matches = ['<tag>xyz</tag>','<tag>abc</tag>]
现在我正在使用以下正则表达式
matches = re.findall(r"<tag>[\w\W]*</tag>", text)
但是,与包含两个元素的列表相比,我只获得了一个带有整个输入字符串的元素,例如:
matches = ['<tag>xyz</tag>\n<tag>abc</tag>']
有人可以指导我吗? 谢谢。
答案 0 :(得分:0)
您只需要使捕获不贪心。
更改此正则表达式,
<tag>[\w\W]*</tag>
到
<tag>[\w\W]*?</tag>
import re
text = '<tag>xyz</tag>\n<tag>abc</tag>'
matches = re.findall(r"<tag>[\w\W]*?</tag>", text)
print(matches)
打印
['<tag>xyz</tag>', '<tag>abc</tag>']