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