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

时间:2011-10-06 08:35:15

标签: html regex

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

myAttr=\"([^']*)\"

HTML片段:

<img alt="" src="1-p2.jpg" myAttr="http://example.com" class="alignleft" />

它从myAttr结尾/>中选择文字,但我需要选择myAttr="..."(“http://example.com”)

5 个答案:

答案 0 :(得分:22)

你的角色类里面有一个撇号('),但你想要一个引号(")。

myAttr=\"([^"]*)\"

那就是说,你真的是shouldn't be parsing HTML with regexes。 (很抱歉再次链接到那个回答。这个问题的其他答案更多的是“如果你知道你在做什么......”的多样性。但是要注意这一点很好。 。)

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

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

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

答案 1 :(得分:4)

*是一个贪婪的量词。你应该用问号跟着它,使它变得非贪婪:

myAttr=\"([^']*?)\"

答案 2 :(得分:2)

如果您只想要myAttr参数,请使用:

"myAttr=\"([^\"]+)\""

答案 3 :(得分:0)

您可以尝试使用

 myAttr=\"?[\w:\-]+ ?= ?("[^"]+"|'[^']+'|\w+)\"

答案 4 :(得分:-3)

的百分比抑制率^&GT;] *&GT;

试试这是删除所有标记的帮助

实施例 某物