条件正则表达式中的断言

条件正则表达式中的断言

具有以下正则表达式:

(?(?<=\AA)a|e)/g

和测试字符串:

Aa
Ae
Be

它匹配a(行 #1)、e(行 #2)、e(行 #3)。我认为它应该只匹配a(行 #1),因为有 3 行但只有一个字符串 - 仅\AA匹配A一次 (在字符串的第一行),因此应用仅在第一行a匹配的模式。a

答案1

它不应该只匹配a(第 1 行)吗?

不。

您当前的表情翻译成英文:

  • ?(?<=\AA)- 如果当前字符位于字符串开头并且 A
    • 然后匹配a-这将a在第一行匹配
    • else (= 任何其他情况) 匹配e- 这将e在第 2 行和第 3 行匹配

相关内容