加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – 为什么(?!^)等价于(?<!^)?

发布时间:2020-12-14 06:01:26 所属栏目:百科 来源:网络整理
导读:不久前我在SO上回答了 this question,但我还是没弄清楚为什么我的回答有效. 出于某种原因,字符串开头的负前瞻行为与负面后观行为相同. 例如,在PHP中 preg_replace("/(?!^)12/","ab","12345"); // 12345preg_replace("/(?!^)12/","12345"); // 12345preg_repl
不久前我在SO上回答了 this question,但我还是没弄清楚为什么我的回答有效.

出于某种原因,字符串开头的负前瞻行为与负面后观行为相同.

例如,在PHP中

preg_replace("/(?!^)12/","ab","12345");   // 12345
preg_replace("/(?<!^)12/","12345");  // 12345
preg_replace("/(?!1)23/","12345");   // 1ab45
preg_replace("/(?<!1)23/","12345");  // 12345

我知道这不是有史以来最有用的问题,但这已经让我困扰了几个星期.

解决方法

插入符号是零宽度断言.事实上,前瞻和后视也是零宽度.因此,在这种情况下,如果您向前或向后看并不重要,您仍然在寻找相同的角色位置.

这在this article中得到了很好的解释.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读