当前位置:Gxlcms > PHP教程 > php中的正则反向引用求解?

php中的正则反向引用求解?

时间:2021-07-01 10:21:17 帮助过:6人阅读

本帖最后由 u010572351 于 2013-06-06 17:46:46 编辑

是这样的,使用正则将匹配的连续4个数字加上一个括号,数字不变。

老师说的是反向捕获,好像使用的是{1},我试了下不行,然后网上说的是\1,有反应但是不对,然后我自己改了个下面写的\0,就反向捕获到了,但是网上查了下,好像没这样写的,,,,,但是我的确捕获到了4个数字,是怎么回事??? 还有,数组式正则的什么意思?

$a="abcd 1234reo 5678";

//下面我们使用php中的正则表达式来处理上面的内容

$myreg=array(
"/(\d){4}/i"
);

$con=array(
'[ \0]' // 捕获到数字,不改他,直接加上一个中括号,我自己弄出来的写法,?
);


回复讨论(解决方案)

运行结果:wqe{2313}jyu6y{6546}iuoi

运行结果:wqe{2313}jyu6y{6546}iuoi


对的,,能解释一下吗?

还有,如果是引用其中一部分怎么办?
如“1234”匹配的,引用里面的数字,再加中括号[1234]?




我把正则表达式写在数组里面去了,你这个方法又不行了,在数组里面必须是${0}才行

运行结果:wqe{2313}jyu6y{6546}iuoi




我知道了,是你的正则写法和我的写法不一样导致的,但是为什么呢?我写的没有错啊?


我是:/(\d){4}/i
你是:/(\d{4})/

这两个居然不一样?求解???????????

/(\d{4})/
[$1]

反向引用的数字表示正则式从左向右数第几对圆括号内的内容,注意 (?...)不计算在内

当有歧义时才需要使用{}
例如反向引用后面要补一个数字就会产生歧义,要写成${1}1??表示反向引用第一对括号内容,后面加数字1
但$11则是反向引用第 十一对括号的内容(如果没有那么多括号就为空)

/((?:123)456(789))/
$1得到123456789
$2得到789

/(\d{4})/
[$1]

反向引用的数字表示正则式从左向右数第几对圆括号内的内容,注意 (?...)不计算在内

当有歧义时才需要使用{}
例如反向引用后面要补一个数字就会产生歧义,要写成${1}1??表示反向引用第一对括号内容,后面加数字1
但$11则是反向引用第 十一对括号的内容(如果没有那么多括号就为空)

我是:/(\d){4}/i
你是:/(\d{4})/

这两个居然不一样?求解???????????

已经弄清楚了,谢谢

子表达式
捕获
反向引用

感谢各位!

人气教程排行