放入if子句时,负的正则表达式环顾如何工作?

我试图使用正则表达式捕获组和环顾四周来匹配序列中特定单词的所有实例,但前提是该单词不被&和;包围。符号(即,我不想从word捕获&word;,但是我从&wordword;捕获)。

我写了一个正则表达式,我认为它可以满足我的需要,但事实并非如此-看来我在if子句中使用的否定外观使仅第一组不匹配而不是整个匹配。

(&[^;&]*)?(amp)(?(1)(?!;))

在此字符串上使用:>amp; &amp; amp &amp; &amp<时,由于环顾四周,我希望仅匹配第一,第三和第五安培,但是出乎意料的是,当它们与{{ 1}}。

https://regex101.com/r/ilAAVb/1

我在这里犯了一些明显的错误,还是if子句仅适用于该子句正在检查的组?

编辑:更正了我需要从句子中提取的内容。

lz407854504 回答:放入if子句时,负的正则表达式环顾如何工作?

也许不是最优雅的,但这可行:

(&\b\w+\b(?!;)|(?<!&)\b\w+\b(?!;)|(?<!&)\b\w+\b;)

(&\b\w+\b(?!;)开头&,但末尾;

(?<!&)\b\w+\b(?!;)开头没有&,结尾没有;

(?<!&)\b\w+\b;)开头没有&,结尾没有;

,

使用(*FAIL)(*SKIP)动词,尝试匹配&word;,如果找到,则放弃匹配,然后尝试匹配amp

&.+?;(*SKIP)(*FAIL)|amp

Demo & explanation

本文链接:https://www.f2er.com/3151554.html

大家都在问