有几个问题问老师
1 2 3 4 5 6 7 8 9 10 | $a = "/IMO*C.*a$/U" ; $b = "/(ASD)*/i" ; $str = "imoocqwrwrxvimoocfsasdasdasdIMC-2335462_aaaa im ooc" ; preg_match( $a , $str , $matches1 ); preg_match( $b , $str , $matches2 ); print_r( $matches1 ); print_r( $matches2 ); |
代码中$a正则为什么a后面添加$匹配不到内容呢? $不是以a结尾吗?
$b中用*为什么也匹配不到内容?>=0,为什么取了=0的结果,这里并没有用禁止贪婪啊
为什么$b = "/(ASD)+/i"; 用+就可以匹配出来,而且为什么结果是4个asd,可是字符串中只有三个asd啊
2
收起
正在回答 回答被采纳积分+1
4回答
雨之赞歌
2019-04-12 16:58:51
我再说详细一点:
1 2 3 4 5 6 7 | $a = "/(asd)*/" ; $str = "imoocqwrwrxvimoocfsasdasdasdIMC-2335462_aaaa im ooc" ; preg_match( $a , $str , $matches1 ); print_r( $matches1 ); |
为什么 /(asd)*/ 匹配不到任何内容,*的作用是匹配前一个子表达式重复>=0次,但是这里为什么打印结果为空? 老师说过正则是贪婪的,应该结果是asdasdasd才对,而这里并没有禁止贪婪。但是为什么改成 /(asd)+/ 就可以匹配出asdasdasd ?????
PHP常用技术与ThinkPHP5框架开发
- 参与学习 人
- 提交作业 225 份
- 解答问题 3372 个
掌握用PHP开发互联网网站的必备功能,掌握当下主流的Linux系统开发,并熟练使用热门框架ThinkPhp开发电商团购项目,是通向PHP工程师必经之路。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧