【问题标题】:Regex - Match attribute in a HTML code [duplicate]正则表达式 - HTML 代码中的匹配属性 [重复]
【发布时间】:2011-12-02 02:00:25
【问题描述】:

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

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

HTML sn-p:

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

它从myAttr 结尾/&gt; 中选择文本,但我需要选择myAttr="..." ("http://example.com")

【问题讨论】:

    标签: html regex


    【解决方案1】:

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

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

    也就是说,你真的shouldn't be parsing HTML with regexes。 (很抱歉再次链接到那个答案。该问题还有其他答案更多的是“如果你知道你在做什么......”的多样性。但很高兴知道.)

    请注意,即使您将正则表达式仅限于属性,您也需要考虑很多:

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

    这就是为什么通常需要预先构建的、认真的解析器的原因。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        如果你只想要 myAttr 参数 value,使用这个:

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

        【讨论】:

          【解决方案4】:

          你可以试试看

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

          【讨论】:

            【解决方案5】:

            ]*>

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

            示例 某物

            【讨论】:

            • 你读过这个问题吗?
            猜你喜欢
            • 1970-01-01
            • 2010-11-24
            • 1970-01-01
            • 1970-01-01
            • 2011-09-03
            • 2013-03-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多