regex - 正则表达式是否可以进行 Lookahead 或 Lookbehind?

标签 regex

我正在努力创建某种可以向前看或向后看的正则表达式。

理想的情况是匹配 abba 中的 a,由 b 的存在触发强>.

显然我可以重复a,例如:

((?<=b)a)|a(?=b) 

但是不重复匹配集可以做到吗?

最佳答案

Disclaimer: This answer is using the PCRE syntax/flavor. The syntax may differ from other flavors and some of them don't support it at all.

首先,我只是警告您,您应该选择以下内容:(?<=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

Online demo

关于regex - 正则表达式是否可以进行 Lookahead 或 Lookbehind?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19688681/

相关文章:

javascript - 上传 csv 文件时删除空行

java - 如何删除所有重复的字符

python - 使用正则表达式 python 查找电子邮件

java - 将一个字符替换为不同的字符,具体取决于它是哪个字符

.net - 在 .NET 中转义正则表达式?

java - 字节组合生成器和定序器

python - 使用 Regex 在 Python 中的两个字符串之间更改文本

javascript - 正则表达式检测带括号的双引号 javascript 对象属性

javascript - 正则表达式适用于 PCRE 和 Python,但不适用于 Javascript

javascript - 正则表达式有时返回结果,有时在类似字符串上返回 null