只有在前面有B
的情况下才能匹配A
吗? A
可以位于B
后面的任意位置,其间有任意数量的字符。例子:
A_B (Matches `B`)
C_B (No match)
我试过了:
(?=A)[^B]*B
但它也匹配B
之前的所有字符。我的正则表达式引擎不支持可变长度的后视。我有什么方法可以做到这一点吗?
编辑:我目前正在Eclipse中使用内置的正则表达式搜索,但是,我正在使用regex101.com来测试。
答案 0 :(得分:2)
当你的琴弦的长度上限有一个相对较小的固定上限时,可以使用缺少可变长度后视镜的解决方法。例如,如果您知道字符串长度最多为100个字符,则可以使用{0,100}
代替*
或{1,100}
代替{look}隐藏表达式中的+
:
(?<=A[^B]{0,100})B
当字符串的长度没有明显的上限时,您可以完全放弃lookbehind,在其位置使用非捕获组,将捕获组放在B
上,并使用该组的内容作为正则表达式的结果。