[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: espressioni regolari matching minimo



Non credo che con grep tu possa ottenere quello che ti serve perché il grep restituisce in output l'intera riga in cui si è verificato il match, ossia se anche fai il match lazy (come giustamente suggerito da Gian Uberto) l'output è comunque tutta la riga.

Ad esempio i due comandi

$ echo piopio | grep --color=auto -P '^p.*o'
$ echo piopio | grep --color=auto -P '^p.*?o'

fanno il match su parti diverse della stringa (il secondo è quello lazy), ma ritornano entrambi la riga intera. Se hai un terminale a colori --color=auto dovrebbe evidenziarti la parte che corrisponde alla regex

Mi sa che per avere in output solo la parte cercata devi usare direttamente perl...


Ciao
Simone


Il giorno 19 giugno 2014 10:37, Gian Uberto Lauri <saint@eng.it> ha scritto:
Piviul writes:
 > Ciao a tutti, le espressioni regolari fanno il match della stringa più
 > lunga; intendo ad esempio che:
 >
 > $ echo piopio | grep p.*o
 >
 > restituisca piopio. A me interesserebbe fare invece il match sulla
 > stringa più corta, cioé vorrei che mi restituisse pio: è possibile?

Per default grep usa le regexp "greedy" che vanno a caccia del massimo
pattern, mentre a te servono quelle "lazy" che prendono il pattern
minimo.

Devi usare le regexp con la sintassi del Perl e l'opzione -P di grep

(P.S. la greediness la sapevo da solo, come controllarla in grep l'ho
 trovato su StackOverflow con una seeeemplice ricerca con Google.
 OOps... Io sapevo che il termine magico era "greedy" :) )

--
 /\           ___                                    Ubuntu: ancient
/___/\_|_|\_|__|___Gian Uberto Lauri_____               African word
  //--\| | \|  |   Integralista GNUslamico            meaning "I can
\/                 coltivatore diretto di software       not install
     già sistemista a tempo (altrui) perso...                Debian"

Warning: gnome-config-daemon considered more dangerous than GOTO


--
Per REVOCARE l'iscrizione alla lista, inviare un email a
debian-italian-REQUEST@lists.debian.org con oggetto "unsubscribe". Per
problemi inviare un email in INGLESE a listmaster@lists.debian.org

To UNSUBSCRIBE, email to debian-italian-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: [🔎] 21410.41268.42691.699327@mail.eng.it" target="_blank">https://lists.debian.org/[🔎] 21410.41268.42691.699327@mail.eng.it



Reply to: