问题是关于前瞻和后瞻断言。
\n\n参考前瞻:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n\n(?=...)\n如果...匹配下一个则匹配,但\xe2\x80\x99 不会消耗任何字符串。\n 这称为先行断言。例如,Isaac (?=Asimov)\n 仅当它\xe2\x80\x99s 后跟\'Asimov\' 时才会匹配\'Isaac \'。
\n
匹配 Issac 并查看其后面,但称为“lookahead”。
\n\n尽管:
\n\n\n\n\nRun Code Online (Sandbox Code Playgroud)\n\n(?<=...)\n如果字符串中的当前位置前面有一个以当前位置结尾的 match\n for ... 则匹配。这称为肯定的后向断言。(?<=abc)def 将在 \'abcdef\' 中找到匹配项,因为\n 后向查找将备份 3 个字符并检查所包含的\n 模式是否匹配。
\n
匹配def并检查其头部abc但称为“lookbehind”。
我对“lookbehind”和“lookahead”这个不直观的名称感到非常困惑。这些名字的起源在哪里?
\n