TR1 Regular Expressions
In questo argomento vengono illustrate le grammatiche di vari moduli delle espressioni regolari supporta tale TR1.
In questo argomento
grammatica di espressione regolare
riepilogo di grammatica
dettagli semantici
La corrispondenza e trovare
flag di formato
grammatica di espressione regolare
Elemento
Un elemento può essere uno dei seguenti casi:
carattere normale oggetto che corrisponde allo stesso carattere nella sequenza di destinazione.
In carattere jolly “.„ oggetto che corrisponde a qualsiasi carattere nella sequenza di destinazione tranne una nuova riga.
In espressione tra parentesi quadre il formato “[expr]„, che corrisponde a un carattere o un elemento delle regole di confronto nella sequenza di destinazione che è anche il set definito dall'espressione expr, o nel formato “[^expr]„, che corrisponde a un carattere o un elemento delle regole di confronto nella sequenza di destinazione che non si trova nel set definito dall'espressione expr.
l'espressione expr può contenere qualsiasi combinazione dei seguenti casi:
un singolo carattere.Aggiunge tale carattere al set definito da expr.
In intervallo di caratteri il formato “ch1-ch2“.Aggiunge i caratteri che sono rappresentati da valori nell'intervallo [chiusoch1, ch2] al set definito da expr.
In classe di caratteri il formato “[:name:]„.Aggiunge i caratteri della classe denominata al set definito da expr.
classe di equivalenza il formato “[=elt=]„.Aggiunge gli elementi confrontare a cui sono equivalenti elt impostare quanto definito da expr.
In confrontare simbolo il formato “[.elt.]„.Aggiunge l'elemento delle regole di confronto elt impostare quanto definito da expr.
ancoraggio.L'ancoraggio “^„ corrisponde all'inizio della sequenza di destinazione; l'ancoraggio “$„ corrisponde alla fine della sequenza di destinazione.
In gruppo Capture il formato “( sottoespressione )„, o “(\ sottoespressione \)„ in BRE e grep, che corrisponde alla sequenza di caratteri nella sequenza di destinazione che viene associato dal modello tra i delimitatori.
- escape letterale il form intitolato “\k“, che corrisponde al carattere k nella sequenza di destinazione.
Esempi:
“a„ corrisponde alla sequenza di destinazione “a„ ma non corrisponde alle sequenze di destinazione “B„, “b„, o “c„.
“.„ corrisponde a qualsiasi sequenza di destinazione “a„, “B„, “b„ e “c„.
“[il BZ]„ corrisponde alle sequenze di destinazione “b„ e “c„ ma non corrisponde alle sequenze di destinazione “a„ o “B„.
“[: più bassa:]„ corrisponde alle sequenze di destinazione “a„, “b„ e “c„ ma non corrisponde alla sequenza di destinazione “B„.
“()„ corrisponde alla sequenza di destinazione “a„ e associa il gruppo Capture 1 con la sottosequenza “a„, ma non corrisponde alle sequenze di destinazione “B„, “b„, o “c„.
in ECMAScript, BREe grep, un elemento può essere backreference il form intitolato “\dd“, dove dd rappresenta un valore decimale N che corrisponde a una sequenza di caratteri nella sequenza di destinazione che è la stessa della sequenza di caratteri che viene associato all'ennesima gruppo Capture.Ad esempio, “) \ 1 " (in corrispondenza della sequenza di destinazione “aa„ perché il primo (solo) gruppo Capture corrisponde alle corrispondenze iniziali a„ e quindi \ 1 sequenza “la sequenza finale “a„.
in ECMAScript, un elemento può essere uno dei seguenti casi:
In gruppo di acquisizione il formato “(?: sottoespressione )„.Corrisponde alla sequenza di caratteri nella sequenza di destinazione che viene associato dal modello tra i delimitatori.
un limitato escape formato file “\ f„ del form, “\ n„, “\ r„, “\ t„, o “\ v„.Questi corrispondono a un avanzamento carta, una nuova riga, un ritorno a capo, una tabulazione orizzontale e una tabulazione verticale, rispettivamente, nella sequenza di destinazione.
In asserzione positiva il formato “(? = sottoespressione )„.Corrisponde alla sequenza di caratteri nella sequenza di destinazione che viene associato dal modello tra i delimitatori, ma non modifica la posizione della corrispondenza nella sequenza di destinazione.
In asserzione negativa il formato “(?!sottoespressione )„.Corrisponde a qualsiasi sequenza di caratteri nella sequenza di destinazione che non corrisponde al modello tra i delimitatori e non modifica la posizione della corrispondenza nella sequenza di destinazione.
In sequenza di escape esadecimale “\ x del formhh“.Corrisponde a un carattere nella sequenza di destinazione che è rappresentata da due cifre esadecimali hh.
In sequenza di escape Unicode “\ u del formhhhh“.Corrisponde a un carattere nella sequenza di destinazione che è rappresentata da quattro cifre esadecimali hhhh.
In sequenza di escape di controllo “\ c del formk“.Corrisponde a un carattere di controllo denominato dal carattere k.
In asserzione di confine di parola “\ b„ del form.Corrisponde alla posizione corrente nella sequenza di destinazione è immediatamente dopo la classe confine di parola.
In asserzione negativa di confine di parola il formato “\B„.Corrisponde alla posizione corrente nella sequenza di destinazione non è immediatamente dopo la classe confine di parola.
In escape caratteri DSW il formato “\d", "\D", "\s", "\S", "\w", "\W„.fornisce un nome breve per una classe di caratteri.
Esempi:
“(?: un oggetto)„ corrisponde alla sequenza di destinazione “a„, “(?: ) \ 1 " a non è valido in quanto non esiste un gruppo Capture 1.
“(? il =a)„ corrisponde alla sequenza di destinazione “a„.L'asserzione positiva corrisponde alla sequenza iniziale “a„ nella sequenza di destinazione e il finale “a„ nell'espressione regolare corrisponde alla sequenza iniziale “a„ nella sequenza di destinazione.
“(?! un oggetto)„ non corrisponde alla sequenza di destinazione “a„.
“a \ B„. corrisponde alla sequenza di destinazione “a~„, ma non corrisponde alla sequenza di destinazione “ab„.
“\B„. corrisponde alla sequenza di destinazione “ab„, ma non corrisponde alla sequenza di destinazione “a~„.
in awk, un elemento può essere uno dei seguenti casi:
In escape formato file \ \„ nel formato “, “\„, “\ b„, “\ f„, “\ n„, “\ r„, “\ t„, o “\ v„.Questi corrispondono a una barra rovesciata, avviso, battono il tasto di ritorno, avanzamento pagina, nuova riga, ritorno a capo, tabulazione orizzontale e tabulazione verticale, rispettivamente, nella sequenza di destinazione.
sequenza di escape ottale il form intitolato “\ooo“.Corrisponde a un carattere nella sequenza delle destinazioni in cui la rappresentazione è il valore rappresentato da uno, due, o tre cifre ottali ooo.
ripetizione
Qualsiasi elemento diverso da quello di un oggetto asserzione positiva, a asserzione negativa, o ancoraggio può essere seguito da un conteggio di ripetizione.Il tipo più generale di conteggio di ripetizione assume il formato “{min,max}„, o “\ {min,max\}„ in BRE e grep.Un elemento seguito dal form del conteggio di ripetizione si trova almeno min occorrenze successive e non più di max occorrenze successive di una sequenza che corrisponde all'elemento.Ad esempio, “a {2,3}„ corrisponde alla sequenza di destinazione “aa„ e la sequenza di destinazione “aaa„, ma non la sequenza di destinazione “a„ o la sequenza di destinazione “aaaa„.
Un conteggio di ripetizione possibile eseguire uno dei seguenti formati:
“{min}„, o “\ {min\}„ in BRE e grep.equivalente a “{min,min}„.
“{min,}„, o “\ {min, \}„ in BRE e grep.equivalente a “{min, non associato}„.
"*".equivalente a “{0, non associato}„.
Esempi:
“a {2}„ corrisponde alla sequenza di destinazione “aa„ ma non la sequenza di destinazione “a„ o la sequenza di destinazione “aaa„.
“a {2,}„ corrisponde alla sequenza di destinazione “aa„, la sequenza di destinazione “aaa„, e così via, ma non corrisponde alla sequenza di destinazione “a„.
“il a*„ corrisponde a "" di destinazione di sequenza, la sequenza di destinazione “a„, la sequenza di destinazione “aa„, e così via.
per tutte le grammatiche escludere BRE e grep, un conteggio di ripetizione possibile eseguire uno dei seguenti formati:
“?„.equivalente a “{0,1}„.
“+„.equivalente a “{1, non associato}„.
Esempi:
su “?„ corrisponde a "" di destinazione di sequenza e la sequenza di destinazione “a„, ma non la sequenza di destinazione “aa„.
“a+„ corrisponde alla sequenza di destinazione “a„, la sequenza di destinazione “aa„, e così via, ma non "" di destinazione di sequenza.
in ECMAScript, tutti i form del conteggio di ripetizione può essere seguito dal carattere “? „, che definisce un oggetto ripetizione non-greedy.
Concatenazione
elementi di espressione regolare, con o senza conteggi di ripetizione, può essere concatenatoe per formare le espressioni regolari più lunga.L'espressione risultante corrisponde a una sequenza di destinazione che è una concatenazione delle sequenze che vengono trovate corrispondenze da singoli elementi.Ad esempio, “a {2,3} " b„ corrisponde alla sequenza di destinazione “aab„ e la sequenza di destinazione “aaab„, ma non corrisponde alla sequenza di destinazione “ab„ o la sequenza di destinazione “aaaab„.
Alternanza
in tutte le grammatiche di espressione regolare escludere BRE e grep, un'espressione regolare concatenata può essere seguita dal carattere “|„ e un'altra espressione regolare concatenata.Qualsiasi numero di espressioni regolari concatenate possono essere combinati in questo modo.L'espressione risultante corrisponde a qualsiasi sequenza di destinazione corrispondente a uno o più delle espressioni regolari concatenate.
Quando più delle espressioni regolari concatenate corrisponde alla sequenza di destinazione, ECMAScript selezionare il primo delle espressioni regolari concatenate che corrisponde alla sequenza come la corrispondenza (prima corrispondenza); le altre grammatiche di espressione regolare consente che raggiunge corrispondenza più lunga.Ad esempio, “ab|il CD„ corrisponde alla sequenza di destinazione “ab„ e la sequenza di destinazione “CD„, ma non corrisponde alla sequenza di destinazione “abd„ o la sequenza di destinazione “acd„.
in grep e egrep, un carattere di nuova riga (" \ n ") può essere utilizzato per separare i compromessi.
sottoespressione
in BRE e grep, una sottoespressione è una concatenazione.Nelle altre grammatiche di espressione regolare, una sottoespressione è un'alternanza.
riepilogo di grammatica
Nella tabella seguente vengono riepilogate le funzionalità disponibili nelle diverse grammatiche di espressione regolare fornite da TR1:
Elemento |
BRE |
ERE |
ECMA |
grep |
egrep |
awk |
---|---|---|---|---|---|---|
alternanza utilizzando “|„ |
+ |
+ |
+ |
+ |
||
alternanza utilizzando il “\ n„ |
+ |
+ |
||||
ancoraggio |
+ |
+ |
+ |
+ |
+ |
+ |
backreference |
+ |
+ |
+ |
|||
espressione tra parentesi quadre |
+ |
+ |
+ |
+ |
+ |
+ |
gruppo Capture che utilizza “()„ |
+ |
+ |
+ |
+ |
||
gruppo Capture che utilizza “(\ \)„ |
+ |
+ |
||||
sequenza di escape di controllo |
+ |
|||||
escape caratteri DSW |
+ |
|||||
escape formato file |
+ |
+ |
||||
sequenza di escape esadecimale |
+ |
|||||
escape letterale |
+ |
+ |
+ |
+ |
+ |
+ |
asserzione negativa |
+ |
|||||
asserzione negativa di confine di parola |
+ |
|||||
gruppo di acquisizione |
+ |
|||||
ripetizione non-greedy |
+ |
|||||
sequenza di escape ottale |
+ |
|||||
carattere normale |
+ |
+ |
+ |
+ |
+ |
+ |
asserzione positiva |
+ |
|||||
ripetizione utilizzando “{}„ |
+ |
+ |
+ |
+ |
||
ripetizione utilizzando il “\ \ {}„ |
+ |
+ |
||||
ripetizione utilizzando “*„ |
+ |
+ |
+ |
+ |
+ |
+ |
ripetizione utilizzando “?„ e “+„ |
+ |
+ |
+ |
+ |
||
sequenza di escape Unicode |
+ |
|||||
carattere jolly |
+ |
+ |
+ |
+ |
+ |
+ |
asserzione di confine di parola |
+ |
dettagli semantici
Punto di ancoraggio
Un ancoraggio corrisponde a una posizione nella stringa di destinazione, non un carattere.Un “^„ corrisponde all'inizio della stringa di destinazione e “$„ corrisponde alla fine della stringa di destinazione.
backreference
Un backreference è una barra rovesciata che è seguita da un valore decimale N.Corrisponde al contenuto di un oggetto viene presentata gruppo Capture.Il valore N non deve essere maggiore del numero dei gruppi Capture che precedono il backreference.in BRE e grep, il valore N è determinato dalla cifra decimale che segue la barra rovesciata.in ECMAScript, il valore N è determinato da tutte le cifre decimali che seguono immediatamente la barra rovesciata.Di conseguenza, in BRE e grep, il valore N non è mai più di 9, anche se l'espressione regolare include più di nove gruppi Capture.in ECMAScript, il valore N non è associato.
Esempi:
“((a+) (b+))) \ 3 " (c+ corrisponde alla sequenza di destinazione “il aabbbcbbb„.“\ 3 " Di backreference corrisponde al testo al terzo gruppo Capture, ovvero, “(b+)„.Non corrisponde alla sequenza di destinazione “aabbbcbb„.
“) \ 2 " (di un oggetto non è valido.
“(b ()/1000 )/1000 )/1000 (())))))))))\ 10 " ha un significato diversi in BRE e in ECMAScript.in BRE il backreference è “\ 1".Il backreference corrisponde al contenuto del primo gruppo Capture ovvero quello che inizia con “(b„ e terminano con il finale ")„ e viene prima di backreference) e “0 " finale corrisponde a un carattere normale “0 ".in ECMAScript, un backreference è “\ 10 ".Corrispondono al decimo gruppo Capture, ovvero, quello più interno.
Espressione tra parentesi quadre
Un'espressione tra parentesi quadre definisce un set di caratteri e confrontare gli elementi.Quando l'espressione tra parentesi quadre inizia con il carattere “^„ la corrispondenza ha esito positivo se alcun elemento in corrispondenza che imposta il carattere corrente nel di destinazione comando.In caso contrario, la corrispondenza ha esito positivo se uno qualsiasi degli elementi nel set corrispondenza del carattere corrente nella sequenza di destinazione.
Il set di caratteri sia definito specificando qualsiasi combinazione di singoli caratteri, intervalli di caratteri, classi di caratteri, classi di equivalenzae confrontare i simboli.
gruppo Capture
Flag di gruppo Capture il relativo contenuto come una singola unità nella grammatica e nelle etichette di espressione regolare il testo di origine corrispondente al contenuto.L'etichetta associata a ogni gruppo Capture è un numero, che è determinato calcola le parentesi di apertura a cui assegnare etichette ai gruppi Capture alla parentesi aperta che contrassegna il gruppo Capture corrente.In questa implementazione, il numero massimo di gruppi Capture è 31.
Esempi:
“ab+„ corrisponde alla sequenza di destinazione “abb„, ma non corrisponde alla sequenza di destinazione “abab„.
“ab () +„ non corrisponde alla sequenza di destinazione “abb„, ma le corrispondenze la sequenza di destinazione “abab„.
“((a+) (b+))(c+)„ corrisponde alla sequenza di destinazione “aabbbc„ e associa il gruppo Capture 1 con la sottosequenza “aabbb„, il gruppo Capture 2 con la sottosequenza “aa„, il gruppo Capture 3 con “bbb„ e il gruppo Capture 4 con la sottosequenza “c„.
classe di caratteri
Una classe di caratteri in un'espressione fra parentesi quadre aggiunge tutti i caratteri della classe denominata al set di caratteri definito dall'espressione tra parentesi quadre.Per creare un creata classe, utilizzare “[: „ seguita dal nome della classe è seguito da “:]„.Internamente, i nomi delle classi di caratteri vengono riconosciuti chiamando id = traits.lookup_classname.un carattere ch appartiene a tale classe se traits.isctype(ch, id) restituisce true.l'impostazione predefinita regex_traits supporto del modello i nomi della classe nella tabella seguente.
Nome classe |
Descrizione |
---|---|
“alnum„ |
lettere minuscole, maiuscolo e cifre |
“alfa„ |
lettere minuscole e lettere maiuscole |
“spazio vuoto„ |
spazio o una tabulazione |
“controllo„ |
escape formato file caratteri |
“numero„ |
cifre |
“grafico„ |
lettere minuscole, lettere maiuscole, cifre e punteggiatura |
“inferiore |
lettere minuscole |
“stampa„ |
lettere minuscole, lettere maiuscole, cifre, segni di punteggiatura e spazio |
“punct„ |
punteggiatura |
“spazio„ |
spazio |
“superiore |
caratteri maiuscoli |
“xdigit„ |
cifre, “a„, “b„, “c„, “d„, “e-„, “f„, “A„, “B„, “C„, “D„, “E„, “f„ |
"d" |
stessi di cifre |
"s" |
stessi dello spazio |
"w" |
uguale a alnum |
intervallo di caratteri
Un intervallo di caratteri in un'espressione fra parentesi quadre aggiunge tutti i caratteri compresi nel set di caratteri definito dall'espressione tra parentesi quadre.Per creare un creata l'intervallo, inserire il carattere “-„ tra il primo e l'ultimo caratteri nell'intervallo.Utilizzando questo inserisce in serie tutti i caratteri che hanno un valore numerico che è maggiore di o uguale al valore numerico del primo carattere e minore o uguale al valore numerico dell'ultimo carattere.Si noti che questo set di caratteri aggiunti dipende dalla rappresentazione specifica della piattaforma di caratteri.Se il carattere “-„ si verifica all'inizio o alla fine di un'espressione tra parentesi quadre, o come primo o l'ultimo carattere di un intervallo di caratteri, è rappresenta.
Esempi:
“[0-7]„ rappresenta il set di caratteri {“0 ", “1 ", “2 ", “3 ", “4 ", “5 ", “6 ", “7 "}.Corrisponde alle sequenze di destinazione “0 ", “1 ", e così via, ma non “a„.
Nei sistemi che utilizzano la codifica di caratteri ASCII, “[la HK]„ rappresenta il set di caratteri {“h„, “i„, “J„, “K„}.Corrispondono alle sequenze di destinazione “h„, “i„, e così via, ma non “\x8A„ o “0 ".
Nei sistemi che utilizzano la codifica dei caratteri di EBCDIC, “[la HK]„ rappresenta il set di caratteri {“h„, “i„, “\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F„, “\ x90„, “J„, “K„} (" h„ viene per quanto 0x88 e “K„ sia codificato codificati come 0x92).Corrisponde alle sequenze di destinazione “h„, “i„, “\x8A„, e così via, ma non “0 ".
“[- 0-24]„ rappresenta il set di caratteri {“-„, “0 ", “1 ", “2 ", “4 "}.
“[0-2-]„ rappresenta il set di caratteri {“0 ", “1 ", “2 ", “-„}.
Nei sistemi che utilizzano la codifica di caratteri ASCII, “[+--]„ rappresenta il set di caratteri {“+„, “,„, “-„}.
Tuttavia, quando gli intervalli impostazioni sensibili vengono utilizzati, i caratteri in un intervallo sono determinati dalle regole delle regole di confronto per le impostazioni locali.I caratteri che confrontano dopo il primo carattere della definizione dell'intervallo e prima dell'ultimo carattere della definizione dell'intervallo siano presenti.I due caratteri finali sono anche il set.
confrontare elemento
Un elemento e è una sequenza di multi-carattere che viene trattata come singolo carattere.
confrontare simbolo
Un simbolo e in un'espressione fra parentesi quadre aggiunge un oggetto confrontare elemento impostare quanto definito dall'espressione tra parentesi quadre.Per creare un simbolo il confronto, utilizzare “[„. seguito dall'elemento e seguito da “.]„.
sequenza di escape di controllo
Una sequenza di escape di controllo è una barra rovesciata seguita dalla lettera “c„ seguita da una delle lettere “a„ e “z„ o “A„ e “Z„.Corrisponde a un carattere di controllo ASCII denominato dalla lettera.Ad esempio, “\ sono„ corrisponde a “di destinazione \ x09„ della sequenza, poiché <Ctrl-io> ha il valore 0x09.
escape caratteri DSW
Le escape caratteri DSW sono un nome breve per una classe di caratteri, come illustrato nella tabella seguente.
sequenza di escape |
classe denominata equivalente |
classe denominata impostazione predefinita |
---|---|---|
“\ d„ |
“[[: d:]]„ |
“[[: cifra:]]„ |
“\D„ |
“[^ [: d:]]„ |
“[^ [: cifra:]]„ |
“\ " s„ |
“[[: s]:]„ |
“[[: spazio:]]„ |
“\S„ |
“[^ [: s]:]„ |
“[^ [: spazio:]]„ |
“\„ w |
“[[: w:]]„ |
“[a-zA-Z0-9_] * “ |
“\W„ |
“[^ [: w:]]„ |
“[^a-zA-Z0-9_] * “ |
set di caratteri di *ASCII
classe di equivalenza
una classe di equivalenza in un'espressione fra parentesi quadre aggiunge tutti i caratteri e confrontare gli elementi questa operazione equivale all'elemento e nella definizione di classe di equivalenza al set definito dall'espressione tra parentesi quadre.Per creare una classe di equivalenza, utilizzare “[=„ seguito da un elemento e seguito da “=]„.internamente, due elementi confrontare elt1 e elt2 sono pertanto equivalenti se traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).
escape formato file
Le escape formato file sono costituite da sequenze di caratteri di escape per i caratteri del linguaggio C, “\\", "\a", "\b", "\f", "\n", "\r", "\t", "\v".These dispone dei significati normali, ovvero, barra rovesciata, problema, spazio finale, avanzamento pagina, nuova riga, ritorno a capo, tabulazione orizzontale e tabulazione verticale, rispettivamente.in ECMAScript, “\„ e “\ b„ non consentito.(" \ \„ è consentito, ma è di escape letterale, non di escape formato file).
sequenza di escape esadecimale
Una sequenza di escape esadecimale è una barra rovesciata seguita dalla lettera “x„ seguita da due cifre esadecimali (0-9a-fA-F).Corrisponde a un carattere nella sequenza di destinazione con il valore specificato dalle due cifre.Ad esempio, “la codifica dei caratteri di \x41" matches the target sequence "A" when ASCII viene utilizzata.
escape letterale
Le escape letterale è una barra rovesciata seguita da un singolo carattere.Trova la corrispondenza di tale carattere.È obbligatoria quando il carattere ha un significato speciale, l'utilizzo di escape letterale, il significato speciale viene rimosso.Di seguito è riportato un esempio:
“il a*„ corrisponde alla sequenza di destinazione “aaa„, ma non corrisponde alla sequenza di destinazione “a*„.
“a " \ *„ non corrisponde alla sequenza di destinazione “aaa„, ma le corrispondenze la sequenza di destinazione “a*„.
Il set di caratteri consentiti in escape letterale dipende dalla grammatica di espressione regolare, come illustrato nella tabella seguente.
Grammatica |
caratteri di escape letterale concedere |
---|---|
BRE, grep |
{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' } |
ERE, egre |
{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' } |
awk |
ERE più {“, “/„} |
ECMAScript |
Tutti i caratteri tranne quelli che può far parte di un identificatore.In genere, ciò include le lettere, cifre, “$„, “_„ e le sequenze di escape Unicode.Per ulteriori informazioni, vedere il linguaggio ECMAScript. |
singolo carattere
Un singolo carattere in un'espressione fra parentesi quadre aggiunge tale carattere al set di caratteri definito dall'espressione tra parentesi quadre.Ovunque in un'espressione fra parentesi quadre ad eccezione di inizio, un “^„ è rappresenta.
Esempi:
“ABC " []„ corrisponde alle sequenze di destinazione “a„, “b„ e “c„, ma non la sequenza “d„.
“[^abc]„ corrisponde alla sequenza di destinazione “d„, ma non il database di destinazione ordina “a„, “b„, o la “c„.
“[a^bc]„ corrisponde alle sequenze di destinazione “a„, “b„, “c„ e “^„, ma non la sequenza di destinazione “d„.
in tutte le grammatiche di espressione regolare escludere ECMAScript, se “]„ è il primo carattere che segue apertura “[„ o è il primo carattere che segue un “^„ iniziale, è rappresenta.
Esempi:
“[]„ non è valida perché non esiste alcuna “]„ per terminare l'espressione tra parentesi quadre.
“[] ABC]„ corrisponde alle sequenze di destinazione “a„, “b„, “c„ e “]„, ma non la sequenza di destinazione “d„.
“[^] ABC]„ corrisponde alla sequenza di destinazione “d„, ma non il database di destinazione ordina “a„, “b„, “e- " c„, o “]„.
in ECMAScript, “\]„ di utilizzo per rappresentare il carattere “]„ in un'espressione fra parentesi quadre.
Esempi:
“[]„ corrisponde alla sequenza di destinazione “a„ perché l'espressione tra parentesi quadre è vuota.
“[\] ABC]„ corrisponde alle sequenze di destinazione “a„, “b„, “c„ e “]„ ma non la sequenza di destinazione “d„.
asserzione negativa
Un'asserzione negativa corrisponde a qualsiasi carattere mentre il contenuto.Non utilizzano alcuni caratteri nella sequenza di destinazione.Ad esempio, “(?! aa) (a*)„ corrisponde alla sequenza di destinazione “a„ e associa il gruppo Capture 1 con la sottosequenza “a„.Non corrisponde alla sequenza di destinazione “aa„ o la sequenza di destinazione “aaa„.
asserzione negativa di confine di parola
Corrisponde a quelle negative di un'asserzione di confine di parola se la posizione corrente nella stringa di destinazione non è immediatamente dopo la classe confine di parola.
gruppo di acquisizione
I contrassegni di gruppo di acquisizione il relativo contenuto come una singola unità nella grammatica di espressione regolare, ma non contrassegna il testo di origine.Ad esempio, “(a) (?: b) * (c) corrisponde al testo di origine “abbc„ e associa il gruppo Capture 1 con la sottosequenza “a„ e il gruppo Capture 2 con la sottosequenza “c„.
ripetizione non-greedy
Ripetizione non-greedy utilizzata la più breve sottosequenza della sequenza di destinazione che corrisponde al modello.Ripetizione greedy utilizza il più lungo.Ad esempio, “(a+) (a*b)„ corrisponde alla sequenza di destinazione “aaab„.Quando una ripetizione non-greedy viene utilizzata, associa il gruppo Capture 1 con la sottosequenza “a„ all'inizio della sequenza di destinazione e il gruppo Capture 2 con la sottosequenza “aab„ alla fine della sequenza di destinazione.Quando una corrispondenza greedy viene utilizzata, associa il gruppo Capture 1 con la sottosequenza “aaa„ e il gruppo Capture 2 con la sottosequenza “b„.
sequenza di escape ottale
Una sequenza di escape ottale è una barra rovesciata seguita da una, due, o tre cifre ottali (0-7).Corrisponde a un carattere nella sequenza di destinazione con il valore specificato dalle cifre.Se tutte le cifre sono “0 ", la sequenza non è valida.Ad esempio, “la codifica dei caratteri di \101" matches the target sequence "A" when ASCII viene utilizzata.
Carattere normale
Un carattere normale rappresenta qualsiasi carattere valido e non ha un significato speciale nella grammatica corrente.
in ECMAScript, i seguenti caratteri hanno un significato speciale:
- ^ $ \ .* + ?( ) [ ] { } |
in BRE e grep, i seguenti caratteri hanno un significato speciale:
- .[ \
Inoltre in BRE e grep, i seguenti caratteri hanno un significato speciale in caso di utilizzo in un contesto specifico:
“*„ ha un significato speciale in tutti i casi a meno che quando è il primo carattere in un'espressione regolare o il primo carattere che segue un “^„ iniziale in un'espressione regolare, o quando è il primo carattere di un gruppo Capture o il primo carattere che segue un “^„ iniziale in un gruppo Capture.
“^„ ha un significato speciale quando è il primo carattere di un'espressione regolare.
“$„ ha un significato speciale quando è l'ultimo carattere di un'espressione regolare.
in ERE, egrepe awk, i seguenti caratteri hanno un significato speciale:
- .[ \ ( * + ?{ |
Inoltre in ERE, egrepe awk, i seguenti caratteri hanno un significato speciale in caso di utilizzo in un contesto specifico.
")„ ha un significato speciale quando viene trovata una corrispondenza precedente “(".
“^„ ha un significato speciale quando è il primo carattere di un'espressione regolare.
“$„ ha un significato speciale quando è l'ultimo carattere di un'espressione regolare.
Un carattere normale corrisponde allo stesso carattere nella sequenza di destinazione.Per impostazione predefinita, significa che la corrispondenza ha esito positivo se i due caratteri sono rappresentati dallo stesso valore.In una corrispondenza senza distinzione tra maiuscole e minuscole, due caratteri ch0 e ch1 corrispondenza se traits.translate_nocase(ch0) == traits.translate_nocase(ch1).In una corrispondenza dipendente dalle impostazioni locali, due caratteri ch0 e ch1 corrispondenza se traits.translate(ch0) == traits.translate(ch1).
asserzione positiva
Un'asserzione positiva corrisponde al contenuto, ma non vengono utilizzati alcuni caratteri nella sequenza di destinazione.
Esempi:
“(? il =aa) (a*)„ corrisponde alla sequenza di destinazione “aaaa„ e associa il gruppo Capture 1 con la sottosequenza “aaaa„.
“(AA) (a*)„ corrisponde alla sequenza di destinazione “aaaa„ e associa il gruppo Capture 1 con la sottosequenza “aa„ all'inizio della sequenza di destinazione e il gruppo Capture 2 con la sottosequenza “aa„ alla fine della sequenza di destinazione.
“(? =aa) ()|()„ corrisponde alla sequenza di destinazione “a„ e associa il gruppo Capture 1 con una sequenza vuota perché l'asserzione positiva esito negativo) e il gruppo Capture 2 con la sottosequenza “a„.Corrisponde anche alla sequenza di destinazione “aa„ e associa il gruppo Capture 1 con la sottosequenza “aa„ e il gruppo Capture 2 con una sequenza vuota.
sequenza di escape Unicode
Una sequenza di escape Unicode è una barra rovesciata seguita dalla lettera “u„ seguita da quattro cifre esadecimali (0-9a-fA-F).Corrisponde a un carattere nella sequenza di destinazione con il valore specificato da quattro cifre.Ad esempio, “la codifica dei caratteri di \u0041" matches the target sequence "A" when ASCII viene utilizzata.
carattere jolly
Un carattere jolly corrisponde a qualsiasi carattere incluso nell'espressione di destinazione tranne una nuova riga.
confine di parola
Un confine di parola si verifica nelle seguenti situazioni:
Il carattere corrente si trova all'inizio della sequenza di destinazione e è uno dei caratteri alfanumerici A-Za-z0-9_.
La posizione corrente del carattere è oltre la fine della sequenza di destinazione e l'ultimo carattere della sequenza di destinazione è uno dei caratteri alfanumerici.
Il carattere corrente è uno dei caratteri alfanumerici e il carattere precedente non è.
Il carattere corrente non è uno dei caratteri alfanumerici e il carattere precedente è.
asserzione di confine di parola
Corrispondenze di un'asserzione di confine di parola quando la posizione corrente nella stringa di destinazione è immediatamente dopo la classe confine di parola.
La corrispondenza e trovare
Per un'espressione regolare corrisponda a una sequenza di destinazione, l'intera espressione regolare deve corrispondere l'intera sequenza di destinazione.Ad esempio, l'espressione regolare “DCB„ corrisponde alla sequenza di destinazione “DCB„ ma non corrisponde alla sequenza di destinazione “abcd„ né la sequenza di destinazione “bcde„.
Affinché una ricerca di espressioni regolari vengano, deve essere una sottosequenza nella sequenza di destinazione che corrisponde all'espressione regolare.La ricerca in genere trova la sottosequenza corrispondente all'estrema sinistra.
Esempi:
Una ricerca dell'espressione regolare “DCB„ nella sequenza di destinazione “DCB„ ha esito positivo e corrisponde l'intera sequenza.La stessa ricerca nella sequenza di destinazione “abcd„ anche ha esito positivo e agli ultimi tre caratteri.La stessa ricerca nella sequenza di destinazione “bcde„ anche ha esito positivo e corrisponde ai primi tre caratteri.
Una ricerca dell'espressione regolare “DCB„ nella sequenza di destinazione “bcdbcd„ ha esito positivo e corrisponde ai primi tre caratteri.
Se c " è più di uno sottosequenza che corrisponde a una determinata posizione nella sequenza di destinazione, esistono due modi per scegliere il modello corrispondente.Prima corrispondenza selezionare la sottosequenza trovata innanzitutto quando l'espressione regolare viene associata.Corrispondenza più lunga selezionare la sottosequenza più lunga da quelle che è corrispondano a quella posizione.Se c " è più di uno sottosequenza con la lunghezza massima, la corrispondenza più lunga sceglie che è stato trovato prima.Ad esempio, quando la prima corrispondenza viene utilizzata, la ricerca dell'espressione regolare “b|bc„ nella sequenza di destinazione “abcd„ corrisponde alla sottosequenza “b„ perché il termine sinistra di corrispondenze di alternanza che sottosequenza; pertanto, la prima corrispondenza non tenta il termine destro dell'alternanza.Quando la corrispondenza più lunga viene utilizzata, la stessa ricerca corrisponde a “bc„ perché “bc„ è più lungo di “b„.
Un'associazione parziale ha esito positivo se la corrispondenza raggiunge la fine della sequenza di destinazione senza negativo, anche se non ha raggiunto la fine dell'espressione regolare.Di conseguenza, dopo l'associazione parziale viene eseguita correttamente, aggiungere i caratteri nella sequenza di destinazione può accadere che l'associazione parziale successiva non riesca.Tuttavia, dopo l'associazione parziale non riesce, aggiungendo i caratteri nella sequenza di destinazione non può determinare un'associazione parziale successiva avrà esito positivo.Ad esempio, con un'associazione parziale, “AB„ corrisponde alla sequenza di destinazione “a„ ma non a “c„.
flag di formato
Regole di formato ECMAScript |
regole di formato di sed |
testo di sostituzione |
---|---|---|
“$&„ |
"&" |
La sequenza di caratteri corrispondente all'intera espressione regolare ([match[0].first, match[0].second)) |
“$$„ |
“$„ |
|
|
“\ &„ |
"&" |
“$ `)„ (segno di dollaro seguito dalla virgoletta inversa) |
|
La sequenza di caratteri che precede la sottosequenza che corrisponde all'espressione regolare ([match.prefix().first, match.prefix().second)) |
“$ "„ (segno di dollaro seguito dalla virgoletta avanti) |
|
La sequenza di caratteri che segue la sottosequenza che corrisponde all'espressione regolare ([match.suffix().first, match.suffix().second)) |
“$n„ |
“\ n„ |
La sequenza di caratteri corrispondente al gruppo Capture nel percorso n, dove n è un numero compreso tra 0 e 9 ([match[n].first, match[n].second) |
|
“\ \ n„ |
“\ n„ |
“$nn„ |
|
La sequenza di caratteri corrispondente al gruppo Capture nel percorso nn, dove nn è un numero compreso tra 10 e 99 ([match[nn].first, match[nn].second) |