再一次求解

来源:3-4 贪婪模式与懒惰模式

_Day_Day_Up_

2016-02-18 16:12

$p = '/name:([\w\s]+)/';

$str = "name:steven jobs";

preg_match($p, $str, $match);

echo $match[1]; //结果为:steven jobs


$p = '/\w{4}\:\w{6}\s\w{4}/';

为什么 name :可以直接放上去呢?你看最后一行是我没看答案时写的。。。。。

还有就是最后echo $match[0]

$match[1] 这种是什么意思?



写回答 关注

2回答

  • 凡尘落尽
    2016-02-18 17:41:27
    已采纳

    name:直接写上去是表示所匹配的必须含有name:这个字符串,后面接上正则([\w\s]+)

    至于$match[]是一个数组,用来存储匹配成功的字符串,例如$match[0]所存储的就是整个正则表达式所匹配成功的字符串,而 $match[1]表示第一个括号子模式所匹配的字符串即([\w\s]+),$match[2]则表示第二个括号子模式所匹配的字符串

    你写的那个就和题意有所不一致了......题目可能要求前面必须是有name:     你的正则的话abcd:steven jobs";这是可以过得,具体还看题意,可能理解不到位吧

    说得不好望指正

    _Day_D...

    那个:为什么不用加\,,是不是只有元字符要当做普通字符时才要加,:不是元字符,所以可以直接写上去?

    2016-02-18 18:04:27

    共 2 条回复 >

  • 凡尘落尽
    2016-02-18 18:25:42

    对的,不然元字符本身有其他意义,加上\表转义,就把元字符当成文本了

    _Day_D...

    xiexie

    2016-02-18 19:57:08

    共 1 条回复 >

PHP进阶篇

轻松学习PHP中级课程,进行全面了解,用PHP快速开发网站程序

181843 学习 · 2577 问题

查看课程

相似问题