我想匹配HTML标签及其包含的属性。尝试了以下regex:
/<(\w+)(?: +(\w+)="[\w,;.:\-#'+~*?=&%\$!\/'\]\[@\(\)\s]*")*/gm
在该输入上:
<p><li first="1" second="2" third="3"></li><b><br/><p><li first="1" second="2" third="3"></li><b><br/></p>
<p><li first="1" second="2"></li><b><br/><p><li first="1" second="2"></li><b><br/></p>
<p><li first="1"></li><b><br/><p><li first="1"></li><b><br/></p>
我只有一个属性。如果标记中有多个属性,我总是会得到最后一个。第一行返回third
,第二行返回second
,最后一行返回first
group 2
。
第一行的结果是:
p li third b br p li third b br
但应该是:
p li first second third b br p li first second third b br
如何将所有属性都添加到标签?
答案 0 :(得分:1)
首先,我认为您可以使用[^"]
代替[\w,;.:\-#'+~*?=&%\$!\/'\]\[@\(\)\s]
不幸的是,使用正则表达式无法捕获您案例中的所有参数。有关进一步的解释,请参见这篇文章:How to capture multiple repeated groups?