选择开始<字符,但不与pre或/ pre连续

时间:2013-04-26 17:51:51

标签: regex

我想在Regexp

中选择本文档中的每个<个字符,但<pre</pre
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
</head>
<body>
    <pre>
        if a < b
    </pre>
</body>
</html>

enter image description here

3 个答案:

答案 0 :(得分:1)

这取决于正则表达式引擎。如果它支持negative lookahead assertions的Perl正则表达式,则可以执行

<(?!(pre)|(\/pre))

<(?!\/?pre)

group1(?!group2)表示只有当以下部分与group1不匹配时才匹配group2(因此名称为“负向前瞻”。此处group1< },group2\/?pre

答案 1 :(得分:1)

Here's一个可爱的例子,说明为什么RegEx不是HTML的最佳选择。

无论如何,如果你选择忽略,这里是你想要使用的表达式(它还将处理HTML中有效的空格和大小写)

<(?!(\/?\s*[Pp][Rr][Ee]))

答案 2 :(得分:0)

[...]仅适用于单字符类 因此[^(pre|/pre)]不代表任何这些字符:(pre|/pre)
或者,等效地,没有这些字符:)(|/pre
(因为括号和|[]中没有任何意义(据我所记))。

然后你说它应该是?的可选项,因此它不会排除任何内容。

你可能想要预见:

\<(?!/?pre)

(?!...)为负面预测,如果下一个字符与括号内给出的模式匹配,则“匹配”。

/?prepre|/pre的简化。