正则表达式 - HTML代码中的匹配属性

Ton*_*ony 14 html regex

使用正则表达式匹配html属性(在各种html标签中)遇到问题.为此,我使用模式:

myAttr=\"([^']*)\"
Run Code Online (Sandbox Code Playgroud)

HTML片段:

<img alt="" src="1-p2.jpg" myAttr="http://example.com" class="alignleft" />
Run Code Online (Sandbox Code Playgroud)

它从myAttr最后选择文本,/>但我需要选择myAttr="..."(" http://example.com ")

Ray*_*oal 23

'的角色类中有一个撇号(),但你想要一个引号(").

myAttr=\"([^"]*)\"
Run Code Online (Sandbox Code Playgroud)

也就是说,你真的不应该用正则表达式解析HTML.(很抱歉再次链接到那个答案.对于那个问题还有其他答案,更多的是"如果你知道你在做什么......"变种.但是要注意这一点很好.)

请注意,即使您将regexing限制为仅属性,您还需要考虑很多因素:

  • 注意不要在评论内部匹配.
  • 注意不要匹配CDATA部分内部.
  • 如果属性用单引号而不是双引号括起来怎么办?
  • 如果属性根本没有引号怎么办?

这就是为什么通常需要预先构建的,严肃的解析器的原因.


Joh*_*yes 7

* 是一个贪婪的量词。你应该在它后面加上一个问号以使其不贪婪:

myAttr=\"([^']*?)\"
Run Code Online (Sandbox Code Playgroud)