Latest web development tutorials

Espressioni regolari - Sintassi

Regex (espressione regolare) descrive un insieme di stringhe che possono essere utilizzati per verificare se una stringa contiene una certa stringa corrispondente stringa non sostituire o rimuovere una condizione corrisponde una sottostringa da una stringa e così via.

  • Il catalogo della colonna, dir * .txt ls * .txt o * .txt non è in una espressione regolare, perché non * è * con l'espressione regolare significato è diverso.
  • Il metodo di costruire un'espressione regolare e creare espressioni matematiche stesso modo. Cioè, utilizzando una varietà di metacaratteri e gli operatori possono combinare piccole espressioni insieme per creare espressioni più grandi. Componente espressioni regolari può essere un singolo carattere, set di caratteri, selezionare un intervallo di caratteri, tra i personaggi, o qualsiasi combinazione di tutti questi componenti.

Le espressioni regolari sono modalità testo composto da caratteri comuni (come le lettere da A a Z) e caratteri speciali (chiamati "meta-personaggi") della stessa. Descrizione Modalità durante la ricerca di testo per abbinare una o più stringhe. espressione regolare come modello, una modalità di carattere e la stringa di ricerca in modo che corrisponda.

caratteri ordinari

caratteri ordinari non sono esplicitamente indicati come metacaratteri tutti i caratteri stampabili e non stampabili. Questo include tutte le lettere maiuscole e minuscole, tutte le cifre, tutti i segni di punteggiatura e altri simboli.

caratteri non stampabili

caratteri non stampabili possono anche essere una parte dell'espressione regolare. La seguente tabella elenca le sequenze di escape che rappresentano i caratteri non stampabili:

字符 描述
\cx 匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

caratteri speciali

I caratteri speciali cosiddetti, è che alcuni personaggi hanno un significato particolare, come si dice "* .txt" a *, significa semplicemente che la rappresentazione di stringa di qualsiasi significato. Se si desidera trovare il nome del file con il file *, è necessario sfuggire alla *, che è un plus di fronte \. LS \ *. txt.

Molti metacaratteri richiedono un trattamento speciale quando si cerca di abbinare loro. Per abbinare questi caratteri speciali, è necessario prima effettuare il carattere di "escape", vale a dire, il carattere backslash (\) di fronte a loro. La seguente tabella elenca i caratteri speciali espressione regolare:

特别字符 描述
$ 匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( ) 标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\ 将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^ 匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。

Qualifier

Qualifier viene utilizzato per specificare l'espressione regolare di un dato componente deve apparire molte volte per soddisfare la partita. Ci * o + o? O {n} o {n,} o {n, m} per un totale di 6.

Espressioni regolari di qualificazione sono:

字符 描述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+ 匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
? 匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n} n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,} n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。

Dal momento che il numero del capitolo in un ampio documento di input sarà probabilmente più di nove, quindi è necessario un modo per trattare con due o tre numeri capitoli. Qualifier ti dà questa possibilità. La seguente espressione regolare corrisponde a qualsiasi numero di bit titoli dei capitoli numerati:

/Chapter [1-9][0-9]*/

Si prega di notare che la qualificazione appare dopo l'espressione gamma. Così, si applica a tutta la gamma di espressione, in questo caso, solo il numero specificato da 0-9 (incluso 0 e 9).

+ Qualifier non è usato qui, come in seconda posizione o la posizione posteriore non hanno necessariamente bisogno di avere un numero. Né usare? Carattere, perché limita i numeri di capitolo a solo due cifre. È necessario far corrispondere il numero di almeno un capitolo e di spazio caratteri indietro.

Se si conosce il numero del capitolo è limitato a soli 99 capitoli, è possibile utilizzare la seguente espressione per specificare almeno uno, ma almeno due cifre.

/Chapter [0-9]{1,2}/

Lo svantaggio della espressione di cui sopra è maggiore di 99 capitoli ancora numero corrisponde solo l'inizio di due cifre. Un altro svantaggio è che il capitolo 0 sarà anche corrispondere. Migliore corrispondenza di due cifre di espressione è la seguente:

/Chapter [1-9][0-9]?/

o

/Chapter [1-9][0-9]{0,1}/

*, +, E? Qualificatori sono avidi perché corrispondono la quantità di testo, solo dietro di loro, oltre a un? Può essere raggiunto match non avido o minima.

Ad esempio, è possibile ricercare i documenti HTML per trovare racchiusi in H1 titoli delle sezioni tag. Il testo nel documento come segue:

<H1>Chapter 1 – Introduction to Regular Expressions</H1>

Tutti i contenuti corrispondono le seguenti espressioni a partire da meno di segno (<) per chiudere il tag H1 è simbolo maggiore di (>) tra.

/<.*>/

Se avete solo bisogno di corrispondere l'inizio del tag H1, la seguente espressione "non-greedy" corrisponde solo <h1>.

/<.*?>/

Con *, + o? Dopo il posto di qualificazione? Le espressioni possono passare da "greedy" a "non-greedy" o minima corrispondenza espressione.

Locator

Identificazione permette di un'espressione regolare è fissata per l'inizio o la fine della linea. Essi consentono inoltre di creare un'espressione così regolare, queste espressioni regolari appaiono in una parola, una parola all'inizio o alla fine di una parola.

Locator usato per descrivere la stringa o limite di parola, ^ e $ consultare all'inizio e alla fine della stringa, \ b descrizione confine prima o dopo la parola, \ B rappresenta un non-limite della parola.

Espressioni regolari di qualificazione sono:

字符 描述
^ 匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b 匹配一个字边界,即字与空格间的位置。
\B 非字边界匹配。

Nota: non è possibile utilizzare il punto di qualificazione e di ancoraggio. Perché immediatamente prima o dopo i confini di confezionamento o di parola non può avere più di una posizione, e quindi non permette una tale espressione come ^ *.

Per far corrispondere una riga di testo all'inizio del testo, si prega di iniziare a utilizzare l'espressione n ^ carattere. ^ Non utilizzare questo uso l'espressione tra parentesi all'interno della confusione.

Per adattare il testo alla fine di una riga di testo, vedere la fine della espressione utilizzando $ caratteri nel positivo.

Per utilizzare i titoli di sezione nella ricerca, quando il punto di ancoraggio, la seguente espressione regolare corrisponde a un titolo di un capitolo, il titolo contiene solo due seguito da un numero, e l'inizio della linea:

/^Chapter [1-9][0-9]{0,1}/

I veri titoli dei capitoli appaiono solo all'inizio della linea, ma è l'unico testo nella riga. Appare la linea comparsa alla fine della stessa riga. La seguente espressione può essere sicuro che la partita specificata corrisponde solo senza complementare alla sezione di riferimenti incrociati. Creando solo corrispondere all'inizio e alla fine di una riga di testo dell'espressione regolare, si può fare.

/^Chapter [1-9][0-9]{0,1}$/

parola Partita confine è leggermente diversa, ma le espressioni regolari una capacità molto importante. confine di parola è la posizione e lo spazio tra le parole. Non confine di parola è un qualsiasi altro luogo. La seguente espressione corrisponde all'inizio della parola capitolo tre personaggi, perché questi tre personaggi compaiono dopo un limite di parola:

/\bCha/

\ Posizione del carattere B è molto importante. Se si trova all'inizio della stringa da abbinare, si cerca una corrispondenza all'inizio della parola. Se è alla fine della stringa, esso cerca una corrispondenza alla fine di una parola. Ad esempio, la seguente espressione parole corrispondenti Capitolo stringa ter, così come appare di fronte al limite della parola:

/ter\b/

La seguente espressione corrisponde alla stringa Capitolo apt, ma non corrisponde alla stringa di attitudine apt:

/\Bapt/

Apt stringa di parola appare nel capitolo confine non-parola, ma la parola compare nel attitudine del limite di parola. Per i non-parola operatore confine B \, la posizione non è importante, perché la partita non si preoccupa se è all'inizio o alla fine di una parola.

selezionare

Utilizzare le parentesi per racchiudere tutte le selezioni, con le opzioni tra adiacente separati da |. Ma vi è un effetto collaterale di utilizzare parentesi, è partite importanti saranno memorizzate nella cache, disponibili in questo momento :? Sulla prima opzione per eliminare questo effetto collaterale.

In cui :? non cattura un elemento, ci sono due non-cattura elemento è = e le due hanno più senso, l'ex positiva pre-indagine, in ogni inizio di essere abbinati tra parentesi è l'espressione ??! modello posizionale per abbinare la stringa di ricerca, che è negativo pre-indagine, in qualsiasi posizione di partenza non corrisponde al modello di espressioni regolari per abbinare la stringa di ricerca.

backreference

Per un modello di espressione regolare o in parte il modello su entrambi i lati si tradurrà in parentesi aggiunte rilevanti risultati corrispondenti a un buffer di memorizzazione temporanea, ogni sotto-catturati vengono memorizzati in ordine da sinistra a destra partita appare in un modello di espressione regolare. Buffer No. 1 fin dall'inizio, può memorizzare fino a 99 sottoespressione catturato. Ogni buffer può usare '\ n' visitare, dove N è un uno o due cifre decimali identificano il buffer speciale.

È possibile utilizzare i metacaratteri non catturare ':?', o di riscrivere la cattura, salvataggio di ignorare la partita in questione '=?'?! '.

Backreference più semplice, uno dei più utile è la capacità di fornire il testo da trovare due identici corrispondenze word adiacenti. Un esempio nella seguente frase:

Is is the cost of of gasoline going up up?

La frase di cui sopra hanno ovviamente molte parole ripetute. Se siamo in grado di escogitare un metodo per individuare la frase, piuttosto che trovare occorrenze duplicate di ogni parola, che il più bene. La seguente espressione regolare utilizza un singolo sotto-espressione per raggiungere questo obiettivo:

/\b([a-z]+) \1\b/gi

espressioni di cattura, come [az] + specificato, tra cui una o più lettere. La seconda parte dell'espressione regolare è quello di abbinare un bambino di riferimento precedentemente catturato, vale a dire, la seconda occorrenza della parola solo di pari passo con l'espressione tra parentesi. \ 1 specifica il primo sotto-partita. Word metacaratteri contorno garantire che solo rilevare l'intera parola. In caso contrario, frasi come "è rilasciato" o "questo è" e simili non sono identificare correttamente questa espressione.

espressioni regolari dopo variabile globale (g) indica, questa espressione viene applicato alla stringa di input può trovare altrettante partite. Espressione caso insensibile alla fine del tag (i) specifica maiuscole e minuscole. tag multi-linea Potenziale partita specifica interruzioni di riga possono verificarsi su entrambi i lati.

Backreference possono anche essere un Indicatore delle risorse universale (URI) nelle sue componenti. Si supponga di voler essere ripartiti nel seguente protocollo URI (ftp, http, ecc), indirizzi di dominio e pagina / percorso:

http://www.w3cschool.cc:80/html/html-tutorial.html

La seguente espressione regolare fornisce questa funzionalità:

/(\w+):\/\/([^/:]+)(:\d*)?([^# ]*)/

La prima sottoespressione tra parentesi cattura la parte del protocollo l'indirizzo Web. La sottoespressione corrisponde a qualsiasi parola colon e due barre di fronte. La seconda sottoespressione tra parentesi cattura la parte indirizzo del dominio dell'indirizzo. Uno o più caratteri diversi: sottoespressione partita / e. Il terzo sottoespressione tra parentesi catturare il numero di porta (se specificato). Il sub-espressione corrisponde a zero o più cifre dopo i due punti. Esso può essere ripetuto una sola volta la sub-espressione. Infine, la quarta sottoespressione tra parentesi acquisisce l'indirizzo Web percorso indicato e / o la pagina. Questo non include il sub-espressione corrisponde eventuali # o spazio caratteri sequenza di caratteri.

L'espressione regolare applicata a quanto sopra URI, la voce di sub-matching contiene i seguenti elementi:

  • La prima sottoespressione tra parentesi contiene "http"
  • La seconda sottoespressione tra parentesi contiene "www.w3cschool.cc"
  • Il terzo subexpression parentesi con "80"
  • La quarta sottoespressione tra parentesi contiene "/html/html-tutorial.html"