不久之前,我在正则表达式中看到过(至少在PHP中)你可以通过前置来捕获捕获组?:.
$str = 'big blue ball';
$regex = '/b(ig|all)/';
preg_match_all($regex, $str, $matches);
var_dump($matches);
Run Code Online (Sandbox Code Playgroud)
输出...
array(2) {
[0]=>
array(2) {
[0]=>
string(3) "big"
[1]=>
string(4) "ball"
}
[1]=>
array(2) {
[0]=>
string(2) "ig"
[1]=>
string(3) "all"
}
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我不关心括号中匹配的内容,所以我附加了?:('/b(?:ig|all)/')并得到了输出
array(1) {
[0]=>
array(2) {
[0]=>
string(3) "big"
[1]=>
string(4) "ball"
}
}
Run Code Online (Sandbox Code Playgroud)
这非常有用 - 至少我是这么认为的.有时你只是不想让你的比赛混乱不必要的值.
我试图查找文档和正式名称(我称之为非捕获组,但我想我之前已经听过).
作为符号,谷歌似乎很难.
我还看了一些正则表达式参考指南,没有提及.
被?括号括起来并出现在括号内的第一个字符中会让我相信它与前瞻或外观有关.
那么,这些的正确名称是什么,我在哪里可以了解更多?