Est-il un comportement défini de la façon dont les expressions régulières doivent gérer la capture de comportement de parenthèses imbriquées? Plus précisément, pouvez-vous raisonnablement s'attendre à ce que les différents moteurs de la capture à l'extérieur des parenthèses dans la première position, et les parenthèses imbriquées dans la suite des positions?
Considérons le code PHP suivant (en utilisant les expressions régulières 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
)
L'ensemble de la mise entre parenthèses de l'expression est capturé en premier (je veux tester), et puis l'interne entre parenthèses modèles sont capturés suivant ("vouloir" et "pour"). C'est tout à fait logique, mais je pouvais voir tout aussi logique cas être pour la première capture de la sous parenthèses, PUIS en capturant l'ensemble du motif.
Alors, est-ce "la capture de la totalité de la chose" comportement défini dans des moteurs d'expressions régulières, ou est-ce que ça va dépendre du contexte de la structure et/ou le comportement du moteur (PCRE être différente de C#étant différent de Java est différent, etc.)?