Dire, ho una riga che contiene la seguente stringa:Perché la mia regex Perl non golosa corrisponde ancora troppo?
"$tom" said blah blah blash. "$dick" said "blah blah blah". "$harry" said blah blah blah.
e voglio estrarre
"$dick" said "blah blah blah"
Ho il seguente codice:
my ($term) = /(".+?" said ".+?")/g;
print $term;
ma mi dà più di quello che mi serve:
"$tom" said blah blah blash. "$dick" said "blah blah blah"
ho provato raggruppamento il mio modello nel suo insieme utilizzando le parentesi non-cattura:
my ($term) = /((?:".+?" said ".+?"))/g;
Ma il problema persiste.
Ho riletto la sezione Quantificatori di Nongreedy di Learning Perl ma non mi ha portato da nessuna parte finora.
Grazie per qualsiasi guida che generosamente offrono :)
Il primo "bla bla blash" non è tra virgolette, quindi la tua espressione regolare è afferrare il secondo set. – Ether
@Ether, il mio problema è: ho pensato che Perl potesse trattare il mio pattern nel suo insieme. Ma mi sbagliavo. Mi stanno rendendo più chiaro che Perl cerca sempre di abbinare il primo sub pattern e poi il subpattern successivo e così via. Sembra che non esista "l'abbinamento di un intero modello simultaneo". – Mike
@brian, grazie. Mi piace il modo in cui hai riformulato la mia domanda :) – Mike