关于正则表达式:正则表达式 – HTML代码中的匹配属性

Regex - Match attribute in a HTML code

本问题已经有最佳答案,请猛点这里访问。

我无法将HTML属性(在各种HTML标记中)与regex匹配。为此,我使用以下模式:

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

HTML片段:

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

它从myAttr中选择文本,从/>的末尾选择文本,但我需要选择myAttr="..."(http://example.com)


字符类中有一个撇号('),但需要一个引号(")。

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

也就是说,您真的不应该用regex来解析HTML。(很抱歉再次链接到该答案。这个问题还有其他的答案,更多的是"如果你知道你在做什么…"的多样性。但这是一件好事。)

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

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

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


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

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


如果只需要myattr参数值,请使用:

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

你可以试着用那个

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

<[^>] *>

只需尝试这是删除所有标签的帮助

例子某物