Czy istnieje zdefiniowane zachowanie dotyczące sposobu, w jaki wyrazy regularne powinny obsługiwać zachowanie przechwytujące zagnieżdżonych nawiasów? Dokładniej mówiąc, czy można rozsądnie oczekiwać, że różne silniki przechwycą zewnętrzne nawiasy w pierwszej pozycji i zagnieżdżą nawiasy w kolejnych pozycjach?Jak zagnieżdżone przechwytywanie grup ponumerowane w wyrażeniach regularnych?
Rozważmy następujący kod PHP (przy użyciu wyrażeń regularnych 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
)
Cały nawiasach wyrażenie jest zrobione pierwsze (Chcę, aby sprawdzić), a następnie wewnętrzne wzorce nawiasach są ujęte w przyszłym („chcę” i "do"). To ma sens logiczny, ale widziałem równie logiczny przypadek, w którym najpierw przechwycono podrzędne nawiasy, a następnie przechwycono cały wzorzec.
Czy jest to "zdefiniowane w pierwszej kolejności zachowanie zdefiniowane w silnikach o regularnych wyrażeniach, czy zależy to od kontekstu wzoru i/lub zachowania silnika (PCRE różni się od C# niż Java jest inna niż itp.)?
Jeśli naprawdę interesują Cię wszystkie smaki regex, "agnostyk językowy" "Znacznik jest tym, czego chcesz." Istnieje zbyt wiele smaków, aby je wszystkie wymienić, a większość z nich nie jest zgodna z żadnym prawdziwym standardem (al. chociaż są niezwykle spójne, jeśli chodzi o numerowanie grup przechwytujących). –
Dostęp do grupy można uzyskać za pomocą 1 $, 2 $, 3 $ .... itd. Jak uzyskać dostęp do 10. grupy? Czy będzie to 10 $? Nie sądzę, że 10 USD będzie działać, ponieważ będzie interpretowane jako 1 $, a następnie 0. Czy to oznacza, że możemy mieć tylko 9 grup? Jeśli autor może, proszę, załączyć to jako część pytania, to będzie to jedyne miejsce, w którym można będzie dowiedzieć się wszystkiego o zagnieżdżonych grupach w wyrażeniach regularnych. – LionHeart