开始多次捕获组和模式捕获

时间:2016-11-08 15:52:42

标签: php regex preg-match

我放弃了。我正在使用PHP来匹配EITHER括号或方括号内的所有[A-Za-z0-9-.]{1,7}

我有以下reg expresion

$pattern = /(?:(?:\(|\[)([A-Za-z0-9-.]{1,7})(?:\)|\]))/

我无法理解,为什么

$r->filename = Flood Control Geo Survey (Bali) (Indo) (2005) (V1.0) [acc].doc

if (preg_match($pattern, $r->filename, $matches)) {
    echo $r->filename, '<br />';
    echo '<pre>', var_dump($matches), '</pre><hr />';

}

输出:

array(2) {
  [0]=>
  string(6) "(Bali)"
  [1]=>
  string(4) "Bali"
}
  1. 我无法理解为什么[0]在我的捕获组声明之后捕获了左括号和右括号。 [1]是正确的,我需要什么,为什么我还有[0]

  2. 为什么要停止?,仍有(Indo)(2005)(V1.0)[acc]?为什么那些没被捕获?

  3. 我想要的输出是:

    array(){     [0] =&GT;     string(6)“Bali”     [1] =&GT;     string(4)“Indo”     [2] =&GT;     string(4)“2005”     [3] =&GT;     string(4)“V1.0”     [4] =&GT;     string(4)“acc” }

  4. 有人可以帮忙吗?谢谢!

0 个答案:

没有答案