首页 > 后端开发 > php教程 > php反向引用 1 和$1区别?

php反向引用 1 和$1区别?

WBOY
发布: 2016-06-23 14:15:22
原创
1401 人浏览过

php的正则一会看到有人用\1 
一会用$1

两个有什么区别?一般用哪个?


回复讨论(解决方案)

在规则串中只能形如 \1
因为 $ 表示行尾,而 \$1 容易产生歧义

对于后期使用,没有区别
而 perl 中本身就是用 $1 这样访问匹配组的


在正则中只能用\1 , 而在替换字符串中两个都可以。

preg_replace中可以包含后向引用\\n 或(php 4.0.4以上可用)$n,语法上首选后者。 每个 这样的引用将被匹配到的第n个捕获子组捕获到的文本替换。 n 可以是0-99,\\0和$0代表完整的模式匹配文本。 捕获子组的序号计数方式为:代表捕获子组的左括号从左到右, 从1开始数。如果要在replacement 中使用反斜线,必须使用4个("\\\\",译注:因为这首先是php的字符串,经过转义后,是两个,再经过 正则表达式引擎后才被认为是一个原文反斜线)。

当在替换模式下工作并且后向引用后面紧跟着需要是另外一个数字(比如:在一个匹配模式后紧接着增加一个原文数字), 不能使用\\1这样的语法来描述后向引用。比如, \\11将会使 preg_replace() 不能理解你希望的是一个\\1后向引用紧跟一个原文1,还是 一个\\11后向引用后面不跟任何东西。 这种情况下解决方案是使用\${1}1。 这创建了一个独立的$1后向引用, 一个独立的原文1。

引用自php手册 preg_replace

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板