【发布时间】:2018-12-01 20:53:36
【问题描述】:
我是 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>']
有人可以指导我吗? 谢谢。
【问题讨论】:
-
使用惰性(或非贪婪)量词,将
*替换为*?。 -
我是正则表达式的新手,并不真正了解贪婪和非贪婪搜索。感谢您链接这些答案。但是
*?只返回最后一次出现。有没有办法捕获所有事件? -
返回所有匹配项。
-
这是我的确切代码
matches = re.findall(r"<paragraph>[\w\W]*?</paragraph>", file1)。我做错了什么使它只返回最后一次出现吗?我正在尝试捕获多个<paragraph>和</paragraph>标签之间的数据
标签: python regex python-3.x findall