How the heck do I tackle them?
Come ogni cosa nuova:
10 Study
20 Practice
30 goto 10
Studio
Trovo che gli insegnanti di maggior successo inizino a insegnare qualsiasi argomento fornendo prima un po 'di background all'argomento. È importante avere un contesto di ciò che stai imparando e, soprattutto, perché lo stai imparando.
È tutta la corrispondenza di stringhe
Le espressioni regolari sono un mezzo per abbinare i modelli nel testo. È un linguaggio dichiarativo incorporato in numerosi altri linguaggi di programmazione.
Vorrei sottolineare che è un linguaggio dichiarativo, le espressioni regolari sono utili per esprimere quale stringa da abbinare, ma non esprimono in alcun modo come il programma è quello di fare la corrispondenza. Per questo motivo è possibile utilizzare espressioni regolari molto rapidamente e molto lentamente nello stesso linguaggio di programmazione semplicemente utilizzando un parser di RegEx diverso.
Il motivo per la creazione di espressioni regolari è lo stesso per la creazione della maggior parte dei linguaggi di programmazione: i programmatori si sono trovati a svolgere sempre lo stesso compito complicato e hanno deciso di volere un modo più semplice di scrivere il codice.
Alcuni (e dovrebbero) lamentarsi della mia precedente frase dicendo qualcosa sulla falsariga di:
RegEx non semplifica il programma.
è vero
RegEx non rende più semplice un programma, RegEx rende scrivendo il programma più semplice. È ancora necessario essere accurati nei test per accertarsi che tutti i casi corretti siano corretti, e che tutti i casi errati non lo siano. È davvero difficile testare "tutti", e con schemi complicati, è davvero difficile testare "la maggior parte". Nel peggiore dei casi, dovresti comunque testare "alcuni" casi.
consente di incorporare alcuni esempi Ho scelto obbligatoriamente il motore RegEx di JavaScript perché posso verificarlo facilmente nel browser e perché non dovrò eseguire alcuna operazione di escape delle stringhe durante l'utilizzo di valori letterali RegEx.
Quando esegui la normale corrispondenza delle stringhe, prova un valore di stringa contro un altro. Possono venire da qualsiasi luogo, ma alla fine ci vogliono due stringhe confrontandole l'una con l'altra:
if ( 'foo' == 'bar' ) doSomething();
Questo esempio fa schifo perché non farà mai fare nulla
if ( foo == 'bar' ) doSomething();
Molto meglio; ora, in realtà non sappiamo in anticipo se qualcosa sarà fatto o meno. Ora possiamo iniziare ad accettare l'input dell'utente:
if ( prompt( 'Say "bar" to do something.' ) == 'bar' ) doSomething();
Meraviglioso, ora gli utenti possono inserire bar
e qualcosa succederà, finché non riceverai segnalazioni di bug da parte degli utenti che dicono che "bar"
non funziona, o che "BAR" non funziona o che hanno digitato BRA
100 volte e non succede mai niente.
Ignorando gli errori ortografici e i caratteri extra, 'bar' != 'BAR'
, e i programmatori devono pensare a un modo per verificare dove i caratteri sono nel caso sbagliato.
Soluzione semplice, usa toLowerCase
. Funziona in modo meraviglioso, ma che ne è dei nostri utenti che utilizzano l'inglese britannico rispetto all'inglese americano quando stai abbinando something == 'color'
? Ora dovrai abbinare something == 'color' || somthing == 'colour'
.
Per farla breve, gli schemi semplici si trasformano in molto codice ripetitivo molto rapidamente.
L'esempio di colore può semplicemente essere abbinato a:
/colou?r/.test( something )
Una solida conoscenza delle basi delle espressioni regolari può ridurre in modo significativo la quantità di tempo che rifiuti di reinventare la ruota.
Dove studiare
La maggior parte delle lingue che implementano espressioni regolari ha almeno una risorsa disponibile per la sintassi specifica dell'uso di espressioni regolari all'interno di quella lingua. Uno per JavaScript può essere trovato su MDN
leggi.
tutto.
quindi rileggilo.
Ci vuole tempo per imparare, pensarlo come un investimento: un'ora per imparare RegEx ora risparmia un'ora la prossima volta che devi fare un po 'di corrispondenza con le stringhe, e poi un'altra ora la prossima volta.
Practice
Dopo aver letto tutto su RegEx, probabilmente non capirai la maggior parte di esso. Questo perché in realtà non fai qualcosa con esso.
Ho menzionato il motivo per cui ho scelto JS per questo esempio, ti esorto a confonderlo con il tuo browser. È veloce e puoi farlo direttamente nella tua barra degli URL.
JS ha alcuni modi diversi e semplici per usare RegEx:
string.match( regex )
regex.exec( string )
regex.test( string )
A partire da qualcosa di semplice come:
javascript:'color'.match(/colou?r/);
è un modo semplice per mettere piede nella porta. Gioca con esso, rompilo e vedi cosa corrisponde, e cosa no.
Quando rimani bloccato in allenamento, continua con 30
. Devi leggere per saperne di più, ma devi esercitarti per capire veramente quello che hai imparato.