在不使用后视的情况下匹配特定模式前面的模式

Match a pattern preceded by a specific pattern without using a lookbehind

有没有一种方法可以匹配前面有 ABA 可以位于 B 后面的任何位置,中间有任意数量的字符。示例:

A_B (Matches `B`)

C_B (No match)

我试过:

(?=A)[^B]*B

但它也匹配 B 之前的所有字符。我的正则表达式引擎不支持可变长度后视。有什么办法可以做到这一点吗?

编辑:我目前在 Eclipse 中使用内置的正则表达式搜索,但是,我正在使用 regex101.com 来测试。

当您的字符串的长度固定上限相对较小时,可以使用缺少可变长度回顾的解决方法。例如,如果您知道字符串最多 100 个字符长,则可以在后视表达式中使用 {0,100} 代替 *{1,100} 代替 +

(?<=A[^B]{0,100})B

当你的字符串的长度没有明显的上限时,你可以完全放弃 lookbehind,使用一个非捕获组代替它,在 B 上放置一个捕获组,然后使用它的内容作为正则表达式的结果进行分组。