我如何向后查找一个词?

How do I lookbehind for a single word?

在这个字符串 a b-cd 中,我想应用这个正则表达式 a b-c(?<=a)d

唯一的办法就是这样写a b-c(?<=a b-c)d,但我不想把整个正则表达式写在后面去应用它,只想看看这个字母是否存在。

它的复杂版本:(?:[a-z] )?b c d e f(?:(?<=a ) alphas) https://regex101.com/r/gyT6ix/1

这可能吗?

Regex Lookaround Reference

在 pcre 中,不支持您在评论中提到的模式 a b-c(?<=a.*)d 中的无限后视 .*

匹配 [a-z] b c d e fa b c d e d alphas 的一个选项可能是使用看起来像 (?(?=regex)then|else)

if-then-else conditional
(?(?=a)\ba b c d e f alphas\b|[a-z] b c d e f)

关于正则表达式

  • (? If 子句
    • (?=a) 断言右边是 a
    • 的正面前瞻
    • \ba b c d e f alphas\b 匹配 a b c d e f alphas 并使用单词边界来防止 a 和字母成为更大单词的一部分
  • |
  • [a-z] b c d e f 匹配字符 a-z 后跟 b c d e f )

看到一个Regex demo