在负面的后瞻性正则表达式

时间:2018-02-19 21:45:15

标签: c# regex lookbehind named-captures

我想避免将输入视为:

:) :)但想要抓住sa:)ds 或者只是想要从结果中排除,如果有两个或多个相同的标签彼此接触。

我的逻辑说我需要使用负面的lookbehind和命名捕获组,但是canot使它工作,我不确定是否正确的方法。

我尝试过: (?<!(?P<happy>:\)))(?P=happy) 所以,如果我输入为 :) :) - :) - 农行 我想只从第二行“:)”

匹配

1 个答案:

答案 0 :(得分:2)

如果要构建.NET的正则表达式,请不要使用其他RegEx引擎来测试您的模式。也就是说,您可以从.NET中的可变长度lookbehinds中受益,但不会受益于PCRE(您正在使用的引擎)。

这将是.NET中的一种解决方法:

(?<happy>:\))(?<!\k<happy>{2,})(?!\k<happy>)

这显然不适用于regex101.com