我正在尝试提取锚标记的属性( <a>
)。到目前为止,我有这样的表达:
(?<name>\b\w+\b)\s*=\s*("(?<value>[^"]*)"|'(?<value>[^']*)'|(?<value>[^"'<> \s]+)\s*)+
适用于像这样的字符串
<a href="test.html" class="xyz">
和(单引号)
<a href='test.html' class="xyz">
但不适用于不带引号的字符串:
<a href=test.html class=xyz>
我如何修改我的正则表达式使其与不带引号的属性一起使用?或者有更好的方法吗?
更新: 感谢到目前为止所有好的评论和建议。有一件事我没有提到:遗憾的是我不得不修补/修改不是我写的代码。而且没有时间/金钱从下到上重写这些东西。
原文由 splattne 发布,翻译遵循 CC BY-SA 4.0 许可协议
2021 年更新: Radon8472 在 评论 中
regex101.com
正则表达式 https://regex101.com/r/tOF6eA/12021 年之二更新: Dave 在 评论 中建议考虑包含等号的属性值,例如
<img src="test.png?test=val" />
,如 本 regex101 所示:更新(2020 年), Gyum Fox 提议 https://regex101.com/r/U9Yqqg/2 (再次注意
regex101.com
在我最初写这个答案时不存在)应用于:
原始答案(2008 年):如果您有类似的元素
此正则表达式可用于连续查找每个属性名称和值
应用于:
它会产生:
应用于:
它会产生: