Есть ли определенное поведение для того, как регулярные выражения должны обрабатывать поведение захвата вложенных круглых скобок? В частности, можете ли вы разумно ожидать, что разные двигатели будут захватывать внешние скобки в первой позиции и вложенные круглые скобки в последующих позициях?Как вложенные группы захвата нумеруются в регулярных выражениях?
Рассмотрим следующий PHP-код (с использованием регулярных выражений PCRE)
<?php
$test_string = 'I want to test sub patterns';
preg_match('{(I (want) (to) test) sub (patterns)}', $test_string, $matches);
print_r($matches);
?>
Array
(
[0] => I want to test sub patterns //entire pattern
[1] => I want to test //entire outer parenthesis
[2] => want //first inner
[3] => to //second inner
[4] => patterns //next parentheses set
)
Все выражение в скобках захватывается первым (я хочу проверить), а затем внутренние Скобках модели захвачены рядом («хочу» и "в"). Это логично, но я мог видеть одинаково логичный случай для первого захвата вспомогательных круглых скобок, а THEN - захват всего шаблона.
Итак, это «фиксировать все в первую очередь» определенное поведение в механизмах регулярных выражений, или оно будет зависеть от контекста шаблона и/или поведения двигателя (PCRE отличается от C# чем Java отличается от других)?
Если вы действительно заинтересованы во всех ароматах регулярных выражений, язык-агностик «тег - это то, что вы хотите. Существует слишком много вкусов, чтобы перечислить их все, и большинство из них не соответствуют ни одному реальному стандарту (al хотя они замечательно совместимы, когда речь идет о нумерации групп захвата). –
Доступ к группе возможен с помощью $ 1, $ 2, $ 3 .... и т. Д. Как получить доступ к 10-й группе? Будет ли это 10 долларов? Я не думаю, что $ 10 будет работать, потому что это будет интерпретироваться как $ 1, а затем 0. Означает ли это, что мы можем иметь только max 9 групп? Если автор может, пожалуйста, включить это как часть вопроса, тогда это будет одно место, чтобы знать все о вложенных группах в регулярных выражениях. – LionHeart