无法理解 REGEX 中 * 和 + 量词之间的区别

Moh*_*mar 3 php regex

我是正则表达式的新手,正如我所研究的,* 匹配零个或多个,+ 匹配一个或多个,所以我开始测试这个:

<?php
preg_match("/a/", 'bbba',$m);
preg_match("/a*/", 'bbba',$o);
preg_match("/a+/", 'bbba',$p);
echo '<pre>';
    var_dump($m);
    var_dump($o);
    var_dump($p);
echo '</pre>';  
?>
Run Code Online (Sandbox Code Playgroud)

但结果是 * 没有匹配任何东西并在字母 a 存在时返回空:

array(1) {
  [0]=>
  string(1) "a"
}
array(1) {
  [0]=>
  string(0) ""
}
array(1) {
  [0]=>
  string(1) "a"
}
Run Code Online (Sandbox Code Playgroud)

所以我想念这里。

JGN*_*GNI 5

/a/第一个比赛abbba

/a*/匹配 0 个或多个a字符。a字符串的开头和第一个之间有 0 个字符,b因此它在那里匹配。

/a+/匹配 1 个或多个a字符,因此它匹配第一个a字符

这里要注意的是,正则表达式将尽可能早地尝试匹配它正在检查的字符串。