我有这个字符串:<own:egna attribute1="1" attribute2="2">test</own:egna>
我想用正则表达式捕获所有属性。
此正则表达式匹配一个属性:(\s+attribute\d=['"][^'"]+['"])
但是为什么附加像``(\s+attribute\d=['"][^'"]+['"])+`这样的+实际上只返回最后一个匹配的属性而不是全部?
您将如何更改此设置以返回不同组中的所有属性?
实际上,我对此有更多的正则表达式,因此使用 python 的 findall 和等效函数等函数是行不通的。
简短的回答是你不能 - 只有最后一组可以访问。 Python 文档明确指出了这一点:
如果一个组匹配多次,则只能访问最后一次匹配[...]
您必须使用一些语言功能:
- 在 PHP 中,有
preg_match_all
返回所有匹配项。
- 在其他语言中,您必须手动执行此操作:添加
g
正则表达式的修饰符并对其进行循环。例如,Perl 将管理字符串位置并在每次出现时返回 $1 中的下一个匹配项。/([...])/g
模式已匹配。
还看一下捕获重复组 https://stackoverflow.com/questions/25561/capturing-a-repeated-group.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)