Mam regex .net, które testuję przy użyciu Powershell systemu Windows. Wyjście jest w następujący sposób:Kwantyfikator non-chciwy regex daje chciwy wynik
> [System.Text.RegularExpressions.Regex]::Match("aaa aaa bbb", "aaa.*?bbb")
Groups : {aaa aaa bbb}
Success : True
Captures : {aaa aaa bbb}
Index : 0
Length : 11
Value : aaa aaa bbb
Moje oczekiwanie było to, że za pomocą ?
kwantyfikator spowoduje, że mecz będzie aaa bbb
, a druga grupa A jest wystarczająca do zaspokojenia wyraz. Czy moje rozumienie błędnych kwantyfikatorów jest błędne, czy też testuję je nieprawidłowo?
Uwaga: to nie jest po prostu taki sam problem jak Regular Expression nongreedy is greedy
Po prostu zrobiłem to, co powinienem był zrobić i skonsultowałem się z odpowiednim rozdziałem Friedla. To doprowadziło mnie do 'aaa ((?! Aaa).) * Bbb', co jest mniej więcej tym, co powiedziałeś, z tą różnicą, że twoja odpowiedź zawiera dodatkowe szczegóły, które powodują, że podwyrażenia nie są przechwytywane, a także testy dla bbb w negatywie. patrz przed siebie. Niezła odpowiedź. –