我放弃了。我正在使用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"
}
我无法理解为什么[0]
在我的捕获组声明之后捕获了左括号和右括号。 [1]
是正确的,我需要什么,为什么我还有[0]
?
为什么要停止?,仍有(Indo)
,(2005)
,(V1.0)
和[acc]
?为什么那些没被捕获?
我想要的输出是:
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” }
有人可以帮忙吗?谢谢!