2 xiehaohua1989 xiehaohua1989 于 2016.04.20 17:01 提问

php 中正则的子模式问题

preg_ match('/(\d){2}/','abc12ef',$arr)
为什么子模式输出的是2,而不是1呢?

5个回答

CSDNXIAON
CSDNXIAON   2016.04.20 17:12

php正则表达式—子模式的应用
PHP中正则函数
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

w172087242
w172087242   Ds   Rxr 2016.04.20 17:28

我没用过php,但是正则匹配中,如果有分组的话,那么捕获成功的结果为一个长度为分组数+1的数组,
数组第0个下标表示的为匹配的输入串,下标为1的表示第一组,以此类推。

xiehaohua1989
xiehaohua1989 嗯,这个我也是刚学的,谢谢你的回答,不过没回答到重点
一年多之前 回复
qq_34297387
qq_34297387   2016.04.20 20:33

PHP正则^表示开始

hsd2012
hsd2012   2016.04.21 09:22

'/(\d){2}/'与'/\d(\d)/'匹配的子模式相同,如果你想匹配1,可使用'/(\d)\d/';

zjwlgr
zjwlgr   2016.04.25 15:53

preg_match('/(\d){2}/','abc123ef',$arr);
print_r($arr);
//Array ( [0] => 12 [1] => 2 )

匹配abc123ef中 的所有数字,匹配两次,第一个为这两个匹配出来的结果,第二次为你最后一次匹配的数字,你匹配了两次,那么最后一次成功匹配的数字为2,所以是2不是1

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!