问答详情
源自:3-4 贪婪模式与懒惰模式

[不懂就要问]正则表达式输出用数组?

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

这是我写的,改了一下就对了,数组的键为0

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

这是教程给出的答案,数组的键为1

两个问题:

1    为什么要用数组才能输出?

2    为什么教程给出的用$match[1]?我的是[0]?

提问者:Ticvory 2016-11-06 23:06

个回答

  • yauby
    2016-11-07 01:38:29
    已采纳

    1. 因为匹配的结果会存储在变量$match中,即preg_match($p, $str, $match)中的参数$match,而这个参数$match是一个数组。

    2. 因为你和教程的匹配方式不同,如果没有指明,匹配默认为贪婪模式,教程中的正则表达式明显有匹配name这个字符,匹配出的结果$match[0]为整个字符串"name:steven jobs",$match[1]才为steven jobs,而你的正则表达式则明显没有匹配name,所以当然$match[0]为steven jobs啦

  • yauby
    2016-11-08 15:59:05

    对你有帮助我就很开心了,建议你在学习每一节的时候看一下下面别人的评论,会有很大帮助