php反向引用 1 和$1区别?
程序员文章站
2022-06-10 21:53:54
...
php的正则一会看到有人用\1
一会用$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名称解析规则
推荐阅读
-
php传值和传引用的区别点总结
-
sql server中Select count(*)和Count(1)的区别和执行方式
-
Select count(*)、Count(1)和Count(列)的区别及执行方式
-
iPad mini 1和iPad mini 2有什么区别?买哪个比较好?
-
小米盒子1GB增强版和标准版有什么区别 哪个性价比高
-
select count()和select count(1)的区别和执行方式讲解
-
小米平板和华为M1哪个好?小米pad对比华为M1区别评测图文介绍
-
iPad mini 4和其他Ipad mini/mini1/2/3的区别对比
-
小米盒子1gb增强版和小米盒子增强版哪个好?小米盒子1gb增强版和小米盒子增强版区别对
-
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2