Archivio per la categoria » lingua «

Lunedi, 6 aprile, 2009 | Autore:

Un collega sta cercando di imparare regex così ho deciso di metterlo qui. Questo è il primo di una serie di articoli regex correlati. Nelle parti a seguire, stiamo andando a utilizzare il nostro Espressioni regolari per imparare le questioni attinenti Internet mentre simltaneously espansione sulla conoscenza regex.

Regex Quick Start

  1. La barra verticale |, a volte noto come un tubo, è un “OR” operatore nelle espressioni regolari. Essa indica che la sequenza a sinistra oa destra è accettabile. Sulla tastiera, questa chiave è in genere il “capitale”, o “Versione spostato”, del tasto backslash.
  2. Le parentesi sono parentesi tonde () che selezionare una sezione di una espressione regolare. Possono essere utilizzati in modo simile a quando la matematica ordine delle operazioni viene regolata. Il “selezione” può essere fatto riferimento altrove se vedremo più avanti.
  3. La puntino . è un carattere speciale che corrisponde qualsiasi carattere diverso “newline” caratteri.
  4. Un backslash \ è talvolta chiamato fuga personaggio. Ci sono molti personaggi, come le parentesi e la barra verticale sopra, che hanno significati speciali. Il backslash viene utilizzato per portare via (fuga) questi significati speciali. Per esempio, per specificare un punto reale, è necessario sfuggire alla speciale carattere punto: \.
  5. Una stella * è un operatore che indica che il carattere precedente può essere ripetuto zero o più volte. Questo è spesso combinato con il punto di produrre un “jolly” modello, che corrisponde a una stringa di qualsiasi lunghezza: .*

Utilizzando la barra verticale e il carattere di escape

Qui abbiamo una serie di indirizzi web di esempio:

http://dogma.swiftspirit.co.za/
http://swiftspirit.co.za/
http://google.com/

Se voglio un modello che li soddisfa, Potrei usare la barra verticale (regola 1 sopra) separarli. Vorrei poi anche bisogno di usare il carattere di escape (regola 4 sopra) per i punti fermi:

http://dogma  .swiftspirit  .co  .Con /|http://swiftspirit  .CO  .Con|http://google  .com /

Per sopra corrisponderà ogni URI nel mio esempio ma non è specificamente efficace o elegante.

Utilizzando parentesi

Lo stesso può essere raggiunto con la seguente, minore, regex, utilizzando la parentesi dal dominio 2 sopra:

http://((|dogma .)swiftspirit  .CO  .Con|google  .com)/

Si noti che ho semplicemente messo oggetti comuni, per esempio “http://” e “/”, fuori le selezioni.

Che cosa succede se si desidera abbinare testo che potrebbe essere qualsiasi cosa?

Forse avete più che si vuole ancora corrispondere? Per esempio, se metto http://swiftspirit.co.za/downloads/ e voglio ancora il modello per abbinare quello o qualsiasi altro url sotto il mio sito web. O forse il suo bene per http://niente.google.com/niente da abbinare anche. Possiamo usare gli appositi punti e stelle personaggi regole 3 e 5 dall'alto:

http://((|dogma .)swiftspirit  .CO  .Con|(|.*\.)google  .com)/.*

Semplicemente aggiungendo che ogni personaggio può apparire zero o più volte lascia molto più partita senza aggiungere troppo la complessità del regex:

(|.*\.)

Quanto sopra è da davanti del modello google.com. La barra verticale indica due opzioni qui: sia vuoto (così si finisce con solo google.com), o .*\. (così abbiamo niente seguito da un punto letterale e che viene poi seguita da google.com).

Practise rende perfetti

Possiamo già vedere dal l'ultimo esempio che un'espressione regolare può diventare molto rapidamente complessa. Proprio come tutte le lingue, essere facilmente in grado di leggere una espressione regolare richiede pratica. Se avete un bisogno rilevante di lavorare con le espressioni regolari, siete dentro per un ossequio.

Parte 2 dovrebbe essere dovuto in pochi giorni. Farò alcuni molto indiretto “lavoro”, dimostrando come per irrigare cache DNS in una varietà di sistemi.

Condividere
Tuesday, January 13th, 2009 | Autore:

(20:19:25) La: was playing WoW on Saturday
(20:19:40) B: yea dude
(20:19:44) La: They have chat channels similar to IRC, though its specific to the area you’re in
(20:19:52) B: lol
(20:20:01) B: thats kewl
(20:20:05) La: a guy put inI can like to be wearing… “
(20:20:23) La: so I replieda jean pant
(20:20:28) B: lol
(20:20:50) La: and he repliedof ‘n rokkie
(20:21:00) La: I fell off my chair

Condividere