Ho una regex .net che sto testando con Windows PowerShell. L'uscita è il seguente:Quantificatore di regex non-goloso dà un risultato goloso
> [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
mia aspettativa era che usando l'?
quantificatore causerebbe la partita per essere aaa bbb
, come il secondo gruppo di uno della partita è sufficiente a soddisfare l'espressione. La mia comprensione dei quantificatori non avidi è difettosa, o sto verificando in modo errato?
Nota: questo non è chiaramente lo stesso problema Regular Expression nongreedy is greedy
Ho appena fatto ciò che avrei dovuto fare in primo luogo e ho consultato il capitolo pertinente di Friedl. Questo mi ha portato a 'aaa ((?! Aaa).) * Bbb', che è più o meno quello che hai detto, tranne che la tua risposta ha i dettagli aggiunti di rendere la sottoespressione non catturante e anche i test per bbb in negativo guarda avanti. Bella risposta. –