嵌套标签的正则表达式(最里面以使其更容易) [英] Regular expression for nested tags (innermost to make it easier)
问题描述
我对此进行了相当多的研究,但找不到如何将嵌套的 html 标签 与 属性匹配的工作示例.我知道可以在没有属性的情况下匹配平衡/嵌套的最内层标签(例如,正则表达式为 #<div[^>]*>(?:(?> [^<;]+ ) |<(?!div[^>]*>))*?</div>
#x).
但是,我想看到一个正则表达式模式,它可以找到一个带有属性的 html 标签对.
示例:它基本上应该匹配
**<div class="aaa">** <div><div>**</div>** </div>
而不是
**<div class="aaa">** <div><div>**</div>** </div>
有人有什么想法吗?
出于测试目的,我们可以使用:http://www.lumadis.be/regex/test_regex.php
<小时>附注.Steven 在他的博客中提到了一个解决方案(实际上是在评论中),但它不起作用
http://blog.stevenlevithan.com/archives/match-innermost-html-元素
$regex = '/]+?ids*=s*"MyID"[^>]*>(?:((?:[^<]++|<(?!/?div[^>]*>))+)|(<div[^>]*>(?>(?1)|(?2))*))?
/i';
Matching 最内层匹配的
</div>
标签,加上它们的属性 &内容:#<div(?:(?!(<div|</div>)).)*</div>#s
这里的关键是(?:(?!STRING).)*
对于字符串,就像[^CHAR]*
对于字符一样.
来源:https://stackoverflow.com/a/6996274
<小时>PHP 示例:
<div id="4">在 4<div id="5">在 5