不久之后,我回答了这个问题,但我仍然没有想出为什么我的答案有效.
出于某种原因,字符串开头的负前瞻行为与负面后观行为相同.
例如,在PHP中
preg_replace("/(?!^)12/", "ab", "12345"); // 12345
preg_replace("/(?<!^)12/", "ab", "12345"); // 12345
preg_replace("/(?!1)23/", "ab", "12345"); // 1ab45
preg_replace("/(?<!1)23/", "ab", "12345"); // 12345
Run Code Online (Sandbox Code Playgroud)
我知道这不是有史以来最有用的问题,但这已经让我困扰了几个星期.