Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Perché ti stupisce? grep matcha sottostringhe che iniziano o finiscono in un punto qualunque della riga, di fatto la tua espressione richiede semplicemente che ci siano più di tre p di fila in un punto qualunque di ciascuna riga (e quindi non pone limite al numero massimo di p consecutive). Per fare quello che chiedi, dovresti usare una regex del tipo
    codice:
    (^|[^p])p{3,5}([^p]|$)
    (a te il capire come funziona )
    Ultima modifica di MItaly; 23-03-2014 a 19:53
    Amaro C++, il gusto pieno dell'undefined behavior.

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    Quote Originariamente inviata da MItaly Visualizza il messaggio
    Perché ti stupisce? grep matcha sottostringhe che iniziano o finiscono in un punto qualunque della riga, di fatto la tua espressione richiede semplicemente che ci siano più di tre p di fila in un punto qualunque di ciascuna riga (e quindi non pone limite al numero massimo di p consecutive). Per fare quello che chiedi, dovresti usare una regex del tipo
    codice:
    (^|[^p])p{3,5}([^p]|$)
    (a te il capire come funziona )
    comincia con qualsiasi carattere(non si scrive ^. ???) eccetto p
    dopo un numero di p da a 5
    finisci con qualsiasi carattere eccetto p

    perchè tutti quegli or ??

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2012
    Messaggi
    91
    ciao ho trovato per caso questa soluzione :
    codice:
    "^([^p]*p){3,5}[^p]*$"
    funziona , ma...perchè sono obbligato a specificare il gruppo all inizio?
    dove hai imparato a scrivere quelle regex?

  4. #4
    Quote Originariamente inviata da toni00t Visualizza il messaggio
    ciao ho trovato per caso questa soluzione :
    codice:
    "^([^p]*p){3,5}[^p]*$"
    Non mi sembra che risponda a quello che chiedi, ad esempio questa regex matcha come corretta una cosa del tipo
    codice:
    apapap
    Per quanto riguarda la mia (sorry, mi ero perso il messaggio ) avevo fatto un po' di confusione a mia volta la versione corretta direi che potrebbe essere:
    codice:
    ^[^p]*p{3,5}[^p]*$
    che matcha solo stringhe che contengono da tre a cinque p incluse tra caratteri non-p.
    dove hai imparato a scrivere quelle regex?
    Esperienza sul campo, uso quotidiano di vim (dove l'uso delle regex è praticamente continuo ) e di grep.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.