我正在努力创造某种可以向前看或向后看的RegEx。
理想的选择是匹配 b 和 ba 中的 a ,由 b 的存在触发强>
显然我可以重复 a ,例如:
((?<=b)a)|a(?=b)
但是如果不重复匹配集可以做到吗?
答案 0 :(得分:2)
免责声明:此答案使用 PCRE 语法/风格。语法可能与其他版本不同,其中一些根本不支持它。
首先,我会警告你,你应该选择以下内容:(?<=b)a|a(?=b)
。这很容易理解。
现在,如果你想看到另一个解决方案,我想出了以下a(?(?=b)|(?<=b.))
。那是什么意思呢?
a # match a
(? # if
(?=b) # there is a "b" ahead
| # else
(?<=b.) # there is a "b" 2 steps behind
) # end if
答案 1 :(得分:1)
匹配集对我来说似乎是最简单,最清晰的方法。也就是说,您可以始终构建一个仅前瞻的正则表达式,然后将其应用于目标字符串及其反向。