我有以下文字:
aabbaa
aa bbc aa
bbg
aa bbd aa
我想找到starts with bb
not between aa and aa
的单词bbg
,而不管使用PCRE匹配单词之前或之后的空格。在上面的示例中,只应匹配(?<!aa)bb(\w)*(?!aa)
。
我创建了以下模式:
\s*
然而,只有aabbaa不匹配,其他没有。我不知道如何在前方/后方使用(?<!aa\s*)bb(\w)*(?!\s*aa)
来获得所需的结果。似乎使用以下方法不能简单地完成:
{{1}}
怎么做?
答案 0 :(得分:3)
(*跳过)(* F)魔术(无需前瞻)
使用此:
(\baa\b).*?\1(*SKIP)(*F)|\bbb\w+\b
查看the demo中的匹配项。
此问题是此问题中向"regex-match a pattern, excluding..."
解释的技术的典型案例交替|
的左侧匹配完整的aa ... aa
字符串然后故意失败,之后引擎跳转到字符串中的下一个位置。右侧与您想要的bb...
字匹配,我们知道它们是正确的,因为它们与左侧的表达不匹配。
参考