我尝试将<html>
标记与可选属性匹配并提取这些属性。我想匹配<html>
标记的以下变体之一。它将是HTML文档的起始内容,或者在DOCTYPE
之前可能会<html>
声明。
<html>
<html lang="en">
<html class="my-class">
<html class="my-class" lang="en">
正在尝试的正则表达式模式如下所示,但它仅匹配第四种情况的最后一个属性lang="en"
。
/<html(\s+([a-z\-]+)=('|")([^"'>]*)('|"))*>/i
我知道有人建议使用DOM解析器而不是正则表达式。但我认为正则表达式足以满足我的要求,因为我只想匹配<html>
标签。
答案 0 :(得分:3)
使用以下正则表达式,然后从组索引1和3中获取属性值对。
(?:<html|(?<!^)\G)\h*(?:([^=\n\h]+)=(['"])((?:\\\2|(?!\2).)*)\2)?