不久前我回答this question,但我仍然没有弄清楚为什么我的回答有效。
由于某种原因,字符串开头的负向前瞻与负面的后观行为相同。
例如,在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
我知道这不是有史以来最有用的问题,但这已经困扰了我几个星期。
答案 0 :(得分:8)
插入符是零宽度断言。事实上,前瞻和后视也是零宽度。因此,在这种情况下,无论你是向前还是向后看都没关系,你仍然在寻找相同的角色位置。
在this article中很好地解释了这一点。