我想使用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>

发布于 2013-04-27 01:58:30
[...]仅适用于单字符类。
所以[^(pre|/pre)]指的不是这些字符中的任何一个:(pre|/pre)
或者,等效地,这些字符都不是:)(|/pre
(因为括号和|在[]中没有任何意义(据我所知))。
然后你说?应该是可选的,所以它不会排除任何东西。
你可能想要提前看一看:
\<(?!/?pre)(?!...)是负前瞻,如果接下来的字符不匹配括号内给出的模式,它就会“匹配”。
/?pre是对pre|/pre的简化。
发布于 2013-04-27 01:58:23
这将取决于正则表达式引擎。如果它支持使用negative lookahead assertions的Perl正则表达式,您可以这样做
<(?!(pre)|(\/pre))或
<(?!\/?pre)group1(?!group2)的意思是“仅当后面的部分与group1不匹配时才匹配group2 (因此得名为"negative lookahead”)。这里group1是<,group2是\/?pre。
发布于 2013-04-27 02:14:28
这是一个可爱的例子,说明了为什么RegEx不是Here's的最佳选择。
无论如何,如果你选择忽略,下面是你想要使用的表达式(它还将处理在HTML中有效的空格和大写)
<(?!(\/?\s*[Pp][Rr][Ee]))https://stackoverflow.com/questions/16242392
复制相似问题