我想避免将输入视为:
:) :)但想要抓住sa:)ds 或者只是想要从结果中排除,如果有两个或多个相同的标签彼此接触。
我的逻辑说我需要使用负面的lookbehind和命名捕获组,但是canot使它工作,我不确定是否正确的方法。
我尝试过:
(?<!(?P<happy>:\)))(?P=happy)
所以,如果我输入为
:) :)
- :) - 农行
我想只从第二行“:)”
答案 0 :(得分:2)
如果要构建.NET的正则表达式,请不要使用其他RegEx引擎来测试您的模式。也就是说,您可以从.NET中的可变长度lookbehinds中受益,但不会受益于PCRE(您正在使用的引擎)。
这将是.NET中的一种解决方法:
(?<happy>:\))(?<!\k<happy>{2,})(?!\k<happy>)
这显然不适用于regex101.com