为了账号安全,请及时绑定邮箱和手机立即绑定

<?php //请修改变量p的正则表达式,使他能够匹配str中的姓名 $p = '/\w{4}:(\w{6}\s{1}\w{4})/'; $str = "name:steven jobs"; preg_match($p, $str, $match); echo $match[1]; //结果为:steven jobs

$p = '/\w{4}:(\w{6}\s{1}\w{4})/';可以$p = '/\w{6}\s{1}\w{4}/';不行    为什呢?呢??????????

正在回答

2 回答

如果是$p = '/\w{4}:(\w{6}\s{1}\w{4})/';

$match[0]=name:steven jobs

$match[1]=steven jobs

如果是$p = '/\w{4}:(\w{6}\s({1}\w{4}))/;

$match[0]=name:steven jobs

$match[1]=steven jobs

$match[2]=jobs

至于具体原因在于int preg_match( string pattern, string subject [, array matches [, int flags]] )函数

如果提供了 matches,则其会被搜索的结果所填充。$matches[0] 将包含与整个模式匹配的文本,$matches[1] 将包含与第一个捕获的括号中的子模式所匹配的文本,以此类推。

所以就会出现你的现象了

2 回复 有任何疑惑可以回复我~

你这样可以,但是打印的时候要是 mantch[0]

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

<?php //请修改变量p的正则表达式,使他能够匹配str中的姓名 $p = '/\w{4}:(\w{6}\s{1}\w{4})/'; $str = "name:steven jobs"; preg_match($p, $str, $match); echo $match[1]; //结果为:steven jobs

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信