Non usare espressioni regolari:
Questo non si limita all'HTML . Un semplice XML valido non può essere ragionevolmente analizzato con un'espressione regolare, anche se conosci lo schema e sai che non cambierà mai.
Non provare, ad esempio, ad analizzare il codice sorgente C # . Analizzalo invece, per ottenere una struttura ad albero significativa o i token.
- Più in generale, quando disponi di strumenti migliori per svolgere il tuo lavoro.
E se dovessi cercare una lettera, sia piccola che maiuscola? Se ami le espressioni regolari, le userai. Ma non è più facile / veloce / leggibile usare due ricerche, una dopo l'altra? Probabilmente nella maggior parte delle lingue otterrai prestazioni migliori e renderai il tuo codice più leggibile.
Ad esempio, il codice di esempio nella risposta di Ingo è un buon esempio quando non è necessario utilizzare espressioni regolari. Cerca foo
, quindi bar
.
- Quando analizza la scrittura umana.
Un buon esempio è un filtro di oscenità. Non solo è una cattiva idea in generale implementarla, ma potresti essere tentato di farlo usando espressioni regolari, e sbaglierai. Esistono molti modi in cui un essere umano può scrivere una parola, un numero, una frase e sarà compreso da un altro essere umano, ma non dalla tua espressione regolare. Quindi, invece di catturare la vera oscenità, la tua espressione regolare passerà il suo tempo a fare del male agli altri utenti.
- Durante la convalida di alcuni tipi di dati.
Ad esempio, non convalidare un indirizzo e-mail tramite un'espressione regolare. Nella maggior parte dei casi, sbaglierai. In un raro caso, lo farai bene e finirai con un horror di codifica di 6 343 caratteri .
Senza gli strumenti giusti, commetterai errori. E li noterai all'ultimo momento, o forse mai. Se non ti interessa il codice pulito, scriverai una stringa di venti righe senza commenti, spazi o righe.
- Quando verrà letto il tuo codice. E poi leggi ancora, e ancora e ancora, ogni volta da sviluppatori diversi.
Seriamente, se prendo il tuo codice e devo rivederlo o modificarlo, non voglio passare una settimana a cercare di capire una stringa di venti righe di simboli in abbondanza.