php中的正则反向摘引求解
时间:2021-07-01 10:21:17
帮助过:15人阅读
php中的正则反向引用求解?
本帖最后由 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]' // 捕获到数字,不改他,直接加上一个中括号,我自己弄出来的写法,囧
);
分享到: ------解决方案--------------------$s='wqe2313jyu6y6546iuoi';
$s=preg_replace('/(\d{4})/','{${1}}',$s);
print($s);
?>
运行结果:
wqe{2313}jyu6y{6546}iuoi
------解决方案--------------------/(\d{4})/
[$1]
反向引用的数字表示正则式从左向右数第几对圆括号内的内容,注意
(?...)不计算在内
当有歧义时才需要使用{}
例如反向引用后面要补一个数字就会产生歧义,要写成${1}1——表示反向引用第一对括号内容,后面加数字1
但$11则是反向引用第
十一对括号的内容(如果没有那么多括号就为空)
------解决方案--------------------/((?:123)456(789))/
$1得到123456789
$2得到789