我有这个字符串:
<own:egna attribute1="1" attribute2="2">test</own:egna>
我想用正则表达式捕获所有属性。
此正则表达式匹配一个属性:(\s+attribute\d=['"][^'"]+['"])
但是为什么附加一个+就像``(\ s + attribute \ d = ['“] [^'”] + ['“])+`实际上只返回最后一个匹配的属性而不是全部? / p>
您如何更改此选项以返回单独组中的所有属性? 我实际上有更多的regexp,所以使用python的findall和等价物等功能是不行的。
答案 0 :(得分:0)
简短的回答是你不能 - 只有最后一组可以访问。 Python文档明确说明了这一点:
如果一个组多次匹配,则只能访问最后一个匹配[...]
您必须使用某些语言功能:
preg_match_all
返回所有匹配项。g
修饰符添加到正则表达式并循环遍历它。例如,Perl将管理字符串位置,并在每次匹配/([...])/g
模式时返回$ 1的下一个匹配。