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

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

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

PHP
绝地无双 2019-03-12 06:43:25
$str = 'baaacad';$pre = '/a*/'; //匹配字符串中的a匹配不到preg_match($pre,$str,$arr);var_dump($arr);
查看完整描述

3 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

你输出 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
查看完整回答
反对 回复 2019-03-18
?
猛跑小猪

TA贡献1858条经验 获得超8个赞

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

查看完整回答
反对 回复 2019-03-18
?
富国沪深

TA贡献1790条经验 获得超9个赞

$str = 'baaacad';

preg_match("/(a)+/",$str,$arr);

var_dump($arr);

array (size=2)
  0 => string 'aaa' (length=3)
  1 => string 'a' (length=1)
查看完整回答
反对 回复 2019-03-18
  • 3 回答
  • 0 关注
  • 354 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信