【发布时间】:2010-04-02 09:33:30
【问题描述】:
我正在尝试构造一个正则表达式来查找可能已嵌入 JSTL 的空 html 标记。我正在使用 Perl 进行匹配。
到目前为止,我可以将任何不包含 JSTL 的空 html 标记与以下内容匹配?
/<\w+\b(?!:)[^<]*?>\s*<\/\w+/si
\b(?!:) 将避免匹配打开的 JTSL 标记,但这并不能解决 JSTL 是否可能在 HTML 标记本身内(这是允许的)。我只想知道这个 HTML 标签是否没有子标签(只有空格或空)。所以我正在寻找一种匹配以下两者的模式:
<div id="my-id">
</div>
<div class="<c:out var="${my.property}" />"></div>
当前第一个 div 匹配。第二个没有。可行吗?我使用前瞻断言尝试了几种变体,但我开始认为它不是。 但是,我不能肯定地说,或者说为什么不是。
编辑:我不是在写东西来解释代码,而且我对使用解析器不感兴趣。我正在编写一个脚本来指出潜在的问题/疏忽。在这一点上,我也很好奇,看看是否有一些我可能遗漏的前瞻或后瞻智能。如果您对我试图以这种方式“解决”问题感到困扰,请不要认为它是在寻找解决方案。对我来说,现在这更像是一个挑战,也是一个了解更多正则表达式的机会。
此外,如果有帮助,您可以假设 html 是 xhtml 严格的。
【问题讨论】:
-
我想知道我是否可以用锤子划船。我对船或锤子不是很感兴趣,所以不要把它想象成划船。对我来说,现在这更像是一个挑战,也是一个了解更多关于锤子的机会。