Regex 正则表达式匹配除word之外的所有内容

Regex 正则表达式匹配除word之外的所有内容,regex,perl,pcre,regex-lookarounds,regex-negation,Regex,Perl,Pcre,Regex Lookarounds,Regex Negation,所有关于匹配某些内容的QA,除了我发现的单词具有负前瞻性意味着行开始/结束(^$)。但我不知道如何匹配所有的东西(任何字符如 *>代码>),除了在处理文本中间的其他单词之前的单词。< /P> 我应该在内部匹配ABC: 但是这种方式不允许匹配*,除了在ABC之前。我如何实现这一点 有用链接: ,.因为您使用的是Perl/PCRE,所以最快的方法是: /(?s)(?:(*跳过)(*失败)|]*?ABC.*/ 扩大 (?s) <tag> (?: </tag&g

所有关于匹配某些内容的QA,除了我发现的单词具有负前瞻性意味着行开始/结束(
^
$
)。但我不知道如何匹配所有的东西(任何字符如<代码> *>代码>),除了在处理文本中间的其他单词之前的单词。< /P> 我应该在
内部匹配
ABC

但是这种方式不允许匹配
*
,除了
ABC
之前。我如何实现这一点

有用链接:


,.

因为您使用的是Perl/PCRE,所以最快的方法是:

/(?s)(?:(*跳过)(*失败)|]*?ABC.*/

扩大

 (?s)
 <tag>  
 (?:
      </tag>
      (*SKIP) (*FAIL) 
   |  
      . 
 )*?
 ABC
 .*? 
 </tag>
(?s)
(?:
(*跳过)(*失败)
|  
. 
)*?
基础知识
.*? 
基准测试与断言方法的比较

Regex1:(?s)(?:(*SKIP)(*FAIL)|.*?ABC.*?
完成的迭代:50/50(x 1000)
每次迭代找到的匹配项:1
运行时间:0.25秒、254.91毫秒、254905微秒
每秒比赛次数:196151
正则表达式2:(?s)(?:(!)*?ABC.*?
完成的迭代:50/50(x 1000)
每次迭代找到的匹配项:1
运行时间:0.33秒、329.10毫秒、329095微秒
每秒匹配数:151931

正则表达式不擅长两件事:平衡语法和嵌套否定。作为补充说明,在您选择的语言中使用XML解析器要好得多。@grinzСlearly。但毕竟具体描述的问题看起来很简单。regex无法以任何方式解决这个问题?这个问题被标记为
perl
,因此我们可以假设需要一个perl解决方案吗?如果是这样,这类棘手的正则表达式问题就是为什么大家都同意应该使用XML解析器解析XML。例如,请参见“但毕竟具体描述的问题看起来很简单。”——正确。外表可能是骗人的,在这个问题解决后,还会有另一个问题,因为你正在重新发明一个相当复杂的轮子。@z0lupka如果有一个功能充分的正则表达式引擎,这几乎总是可能的。但所需的复杂性几乎永远不值得。如果指定正在使用的正则表达式引擎,这可能很重要(请特别注意,PCRE不是Perl)。
...<tag>a a.__a&*</tag>ABC<tag>ffff</tag>...
<tag>(?!<\/tag>)ABC.*?<\/tag>
 (?s)
 <tag>  
 (?:
      </tag>
      (*SKIP) (*FAIL) 
   |  
      . 
 )*?
 ABC
 .*? 
 </tag>
Regex1:   (?s)<tag>(?:</tag>(*SKIP)(*FAIL)|.)*?ABC.*?</tag>
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   1
Elapsed Time:    0.25 s,   254.91 ms,   254905 µs
Matches per sec:   196,151


Regex2:   (?s)<tag>(?:(?!</tag>).)*?ABC.*?</tag>
Completed iterations:   50  /  50     ( x 1000 )
Matches found per iteration:   1
Elapsed Time:    0.33 s,   329.10 ms,   329095 µs
Matches per sec:   151,931