用使用正则*匹配不到 求帮忙理解

$str = 'baaacad';
$pre = '/a*/'; //匹配字符串中的a匹配不到
preg_match($pre,$str,$arr);
var_dump($arr);

绝地无双
浏览 355回答 3
3回答

梦里花落0921

你输出 var_dump(preg_match($pre,$str,$arr)); 显示匹配到了一个, 可是为什么$arr里面没你想要的值? 实际上, 这个正则匹配到东西了, 就是 在最开始位置的那个0宽的字符, 如下演示 0 1 2 3 4 5 6 b a a a c a d // 为了演示, 把空白也格开了. ^ |====== 实际上正则匹配到这儿了, 所以结果是一个strlen() == 0的字符串. 因为a* 表示0个或多个a, 在最开始就是0个a

猛跑小猪

/a*/ 表示的是a开头的字符串同时a出现0次或多次。 $str = 'baaacad' 属于匹配到了规则a出现了0次,返回的是空

富国沪深

$str = 'baaacad'; preg_match("/(a)+/",$str,$arr); var_dump($arr); array (size=2) 0 => string 'aaa' (length=3) 1 => string 'a' (length=1)
打开App,查看更多内容
随时随地看视频慕课网APP