Некоторое время назад я видел в regex (по крайней мере, на 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"
}
}
Это очень полезно - по крайней мере, я так думаю. Иногда вы просто не хотите загромождать свои матчи ненужными значениями.
Я пытался найти документацию и официальное название для этого (я называю это не захватывающей группой, но я думаю, что слышал ее раньше).
Будучи символами, для Google это было сложно.
Я также просмотрел ряд справочных руководств regex без упоминания.
Будучи префикс с ?
, и появляясь в первых символах внутри круглых скобок, я должен полагать, что это имеет какое-то отношение к lookaheads или lookbehinds.
Итак, каково собственное имя для них, и где я могу узнать больше?