我在使用正则表达式匹配各种HTML标签中的属性时遇到了问题。为此,我使用以下模式:
myAttr=\"([^']*)\"
HTML代码片段:
<img alt="" src="1-p2.jpg" myAttr="http://example.com" class="alignleft" />
它从myAttr
的结尾/>
选择文本,但我需要选择myAttr="..."
("http://example.com")。
我在使用正则表达式匹配各种HTML标签中的属性时遇到了问题。为此,我使用以下模式:
myAttr=\"([^']*)\"
HTML代码片段:
<img alt="" src="1-p2.jpg" myAttr="http://example.com" class="alignleft" />
它从myAttr
的结尾/>
选择文本,但我需要选择myAttr="..."
("http://example.com")。
您在字符类内使用了一个撇号 ('
),但您需要一个引号 ("
)。
myAttr=\"([^"]*)\"
话虽如此,你真的 不应该用正则表达式解析HTML。(很抱歉又链接到了那篇回答。还有其他的回答是更多“如果你知道你在做什么…”的类型,但知道这个问题非常重要。)
请注意,即使您将正则表达式限制为属性,您仍需考虑以下事项:
这就是为什么通常需要预先构建严格的解析器。
*是一个贪婪量词。您应该在其后加上问号以将其变为非贪婪模式:
myAttr=\"([^']*?)\"
如果你仅需要 myAttr 参数的值,使用以下代码:
"myAttr=\"([^\"]+)\""
myAttr=\"?[\w:\-]+ ?= ?("[^"]+"|'[^']+'|\w+)\"
<[^>]*>
尝试这个,它可以帮助你删除所有标签
例如