2012-05-18 21 views
5

Mi riferisco a un foglio cheat di espressioni regolari. DiceEspressioni regolari ungreedy

{3,5} significa

{3,5}? significa 3,4,5 ungreedy +

cosa vuol ungreedy + indicano?

+0

Stai parlando [questo cheat sheet] (http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/), vero? Siate consapevoli del fatto che si tratta di un mash-up di caratteristiche tratte da diversi gusti; quindi non aspettarti che tutto funzioni nel tuo gusto di scelta. Inoltre, elenca '(?! = ...)' come sintassi alternativa per il lookbehind negativo, che è semplicemente sbagliato. Ogni sapore che conosco usa '(?

risposta

9

Il quanitifier {3,5}? significa che proverà ad abbinare prima 3 occorrenze, quindi verificherà se il resto dell'espressione corrisponde. Se il resto dell'espressione fallisce, tornerà indietro e proveremo 4, quindi finalmente 5.

La versione golosa {3,5} proverà le partite nell'ordine opposto - la più lunga prima.

Si noti che l'avidità non influisce sul fatto che una stringa corrisponda o meno. Riguarda solo l'ordine in cui il motore esegue la ricerca e il contenuto delle acquisizioni se ci sono gruppi che catturano.

Ecco un esempio che dimostra la differenza. Immagina di avere la stringa aaaaabc.

  • (a{3,5})(\w*) catturerà aaaaa e bc. (rubular)
  • (a{3,5}?)(\w*) acquisirà aaa e aabc. (rubular)
+0

Grazie. Ho capito parzialmente cosa intendi. Puoi spiegare con un esempio .. – Ank

+0

@Ankur: Aggiunto esempio. –

+0

Grazie per i tuoi esempi .. – Ank