TR1 Regular Expressions
Este tema describe las gramáticas de varios motores de expresiones regulares que TR1 admite.
En este tema
Gramática de expresiones regulares
resumen de la gramática
detalles semánticos
La coincidencia y buscar
Marcas de formato
Gramática de expresiones regulares
Elemento
Un elemento puede ser una de las siguientes operaciones:
Un carácter normal que coincide con el mismo carácter en la secuencia de destino.
un carácter comodín “.” que coincide con cualquier carácter en la secuencia de destino excepto una línea nueva.
Una expresión entre corchetes con el formato “[expr]”, que coincide con un carácter o un elemento de intercalación en la secuencia de destino que se encuentra también en el conjunto definido por la expresión expr, o formulario “[^expr]”, que coincide con un carácter o un elemento de intercalación en la secuencia de destino que no está en el conjunto definido por la expresión expr.
La expresión expr puede contener cualquier combinación de los siguientes aspectos:
un carácter individual.Agrega ese carácter el conjunto definido por expr.
Un intervalo de caracteres de formato “ch1-ch2”.Agrega caracteres representados por valores del intervalo cerrado [ch1, ch2] el conjunto definido por expr.
Una clase de carácter de formato “[:name:]”.Agrega los caracteres en la clase denominada al conjunto definido por expr.
Una clase de equivalencia de formato “[=elt=]”.Agrega los elementos que intercalan que son equivalentes a elt el conjunto definido por expr.
Un símbolo que intercala con el formato “[.elt.]”.Agrega el elemento elt de intercalación el conjunto definido por expr.
Un delimitador.Delimitador “^” coincide con el inicio de la secuencia de destino; delimitador “$” coincide con el final de la secuencia de destino.
Un grupo de captura de formato “( subexpression )”, o “\ ( subexpresión \)” en BRE y grep, que coincide con la secuencia de caracteres de la secuencia de destino que es coincidente por el modelo entre los delimitadores.
- Un escape de identidad de “\k” del formulario, que coincide con el carácter k en la secuencia de destino.
Ejemplos:
“a” coincide con la secuencia “a” de destino pero no coincide con las secuencias “b”, “b”, o “c” de destino.
“.” coincide con todas las secuencias “a” de destino, “b”, “b”, y “c”.
“[BZ]” coincide con las secuencias “b” y “c” de destino pero no coinciden las secuencias “a” de destino o “b”.
“[: inferior:]” coincide con las secuencias “a” de destino, “b”, y “c” pero no coincide con la secuencia “b” de destino.
“(a)” coincide con la secuencia “a” de destino y asocia el grupo 1 de captura el subsequence “a”, pero no coincide con las secuencias “b”, “b”, o “c” de destino.
En ECMAScript, BRE, y grep, un elemento también puede ser una referencia posterior de “\dd” del formulario, donde dd representa un valor n decimal que coincide con una secuencia de caracteres de la secuencia de destino que es igual que la secuencia de caracteres que es coincidente con el grupo de capturade Enésimo.Por ejemplo, “(a) \ 1 " coincide con la secuencia “aa” de destino porque a coincidan con las primeras único) coincidencias del grupo de captura la secuencia inicial “a” y \ 1 la secuencia final “a”.
En ECMAScript, un elemento también puede ser una de las siguientes operaciones:
Un grupo de la no-captura con el formato “(?: subexpresión )”.Coincide con la secuencia de caracteres de la secuencia de destino que es coincidente por el modelo entre los delimitadores.
Una secuencia de escape de caracteres limitada de “\ f” del formulario, “\ n”, “\ r”, “\ t”, o “\ v”.Éstos coinciden con un avance de página, una nueva línea, un retorno de carro, una tabulación horizontal, y una tabulación vertical, respectivamente, en la secuencia de destino.
¿ Un positivo validar con el formato “(? = subexpression )”.Coincide con la secuencia de caracteres de la secuencia de destino que es coincidente por el modelo entre los delimitadores, pero no cambia la coincidencia colocar en la secuencia de destino.
¡ Una negativa validar con el formato “(?!subexpresión )”.Coincide con cualquier secuencia de caracteres de la secuencia de destino que no coincide con el modelo entre los delimitadores, y no cambia la coincidencia colocar en la secuencia de destino.
Una secuencia de escape hexadecimal “\ xhh” del formulario.Coincide con un carácter en la secuencia de destino representada por los dos dígitos hexadecimales hh.
Una secuencia de escape de unicode “\ uhhhh” del formulario.Coincide con un carácter en la secuencia de destino representada por los cuatro dígitos hexadecimales hhhh.
Una secuencia de escape de control “\ ck” del formulario.Coincide con el carácter de control que llama el carácter k.
Un límite de palabra validar “\ b” del formulario.Coincide con si la posición actual en la secuencia de destino es inmediatamente después de un límite de palabras.
Un límite de palabra negativo validar con el formato “\B”.Coincide con si la posición actual en la secuencia de destino no están inmediatamente después de un límite de palabras.
Un escape de carácter de dsw con el formato “\d", "\D", "\s", "\S", "\w", "\W”.proporciona un nombre corto para una clase de carácter.
Ejemplos:
“(?: a)” coincide con la secuencia “a” de destino, pero “(?: a) \ 1 " no es válido porque no hay ningún grupo 1. catch.
¿“(? el =a)” coincide con la secuencia “a” de destino.El positivo validar coincide con la secuencia inicial “a” en la secuencia de destino y el final “a” en la expresión regular coincide con la secuencia inicial “a” en la secuencia de destino.
¡“(?! a)” no coincide con la secuencia “a” de destino.
“a \ el B.” coincide con la secuencia “a~” de destino, pero no coincide con la secuencia “ab” de destino.
“\B”. coincide con la secuencia “ab” de destino, pero no coincide con la secuencia “a~” de destino.
En awk, un elemento también puede ser una de las siguientes operaciones:
Una secuencia de escape de caracteres \ \” del formulario “, “\”, “\ b”, “\ f”, “\ n”, “\ r”, “\ t”, o “\ v”.Éstos coinciden con una barra diagonal inversa, alertan, presione la tecla de reserva, FF, nueva línea, retorno de carro, tabulación horizontal, y tabulación vertical, respectivamente, en la secuencia de destino.
Una secuencia de escape octal “\ooo” del formulario.Coincide con un carácter en la secuencia de destino cuya representación es el valor representado por los uno, dos, o tres dígitos octales ooo.
repetición
Cualquier elemento que no sea un positivo validar, una negativa validar, o de un delimitador puede ir seguido de un número de repetición.La clase más general de recuento de repetición toma la forma “{min,max}”, o “\ {min,max\}” en BRE y grep.Un elemento que sigue este formulario de recuento de repetición coincide con al menos las apariciones sucesivas de min y no más que las apariciones sucesivas de max de una secuencia que coincide con el elemento.Por ejemplo, “a {2,3}” coincide con la secuencia “aa” de destino y la secuencia “aaa” de destino, pero no la secuencia “a” de destino o la secuencia “aaaa” de destino.
Un recuento de repetición puede realizar una de las siguientes formas:
“{min}”, o “\ {min\}” en BRE y grep.equivalente a “{min,min}”.
“{min,}”, o “\ {,} \ demin” en BRE y grep.equivalente a “{min, ilimitados}”.
"*".equivalente a “{0, ilimitado}”.
Ejemplos:
“a {2}” coincide con la secuencia “aa” de destino pero no la secuencia “a” de destino o la secuencia “aaa” de destino.
“a {2,}” coincide con la secuencia “aa” de destino, la secuencia “aaa” de destino, etc., pero no coincide con la secuencia “a” de destino.
“a*” coincide con "" de la secuencia de destino, la secuencia “a” de destino, la secuencia “aa” de destino, y así sucesivamente.
Para todas las gramáticas excepto BRE y grep, un recuento de repetición puede realizar una de las siguientes formas:
“?”.equivalente a “{0,1}”.
“+”.equivalente a “{1, ilimitado}”.
Ejemplos:
“a”? coincide con "" de la secuencia de destino y la secuencia “a” de destino, pero no la secuencia “aa” de destino.
“a+” coincide con la secuencia “a” de destino, la secuencia “aa” de destino, etc., pero no "" de la secuencia de destino.
¿En ECMAScript, todos los formularios de recuento de repetición se pueden seguir el carácter “? ”, que señala una repetición no expansiva.
Concatenación
Los elementos de la expresión regular, con o sin recuentos de repetición, se pueden concatenar para formar expresiones regulares más larga.La expresión resultante coincide con una secuencia de destino que es una concatenación de las secuencias que son coincidentes por los elementos individuales.Por ejemplo, “2,3} b a {” coincide con la secuencia “aab” de destino y la secuencia “aaab” de destino, pero no coinciden con la secuencia “ab” de destino o la secuencia “aaaab” de destino.
Alternancia
En todas las gramáticas de expresiones regulares excepto BRE y grep, una expresión regular concatenada puede ir seguido del carácter “|” y otra expresión regular concatenada.Cualquier número de expresiones regulares concatenadas se puede combinar de esta manera.La expresión resultante coincide con cualquier secuencia de destino que coincida con uno o más de las expresiones regulares concatenadas.
Cuando más coincide con cualquiera de las expresiones regulares concatenadas la secuencia de destino, ECMAScript elige el primer de expresiones regulares concatenadas que coincide con la siguiente coincidencia (primera coincidencia); las otras gramáticas de expresiones regulares elija el que alcanza la coincidencia más larga.por ejemplo, “ab|CD” coincide con la secuencia “ab” de destino y la secuencia “CD” de destino, pero no coincide con la secuencia “abd” de destino o la secuencia “acd” de destino.
en grep y egrep, un carácter de nueva línea (“\ n ") se puede utilizar para separar alternancias.
Subexpresión
En BRE y grep, una subexpresión es una concatenación.En las otras gramáticas de expresión regular, una subexpresión es una alternancia.
resumen de la gramática
La siguiente tabla se resumen las características que están disponibles en las diferentes gramáticas de expresiones regulares proporcionadas por TR1:
Elemento |
BRE |
ERE |
ECMA |
grep |
egrep |
awk |
---|---|---|---|---|---|---|
alternancia utilizando “|” |
+ |
+ |
+ |
+ |
||
alternancia utilizando “\ n” |
+ |
+ |
||||
delimitación |
+ |
+ |
+ |
+ |
+ |
+ |
referencia posterior |
+ |
+ |
+ |
|||
expresión entre corchetes |
+ |
+ |
+ |
+ |
+ |
+ |
grupo de captura mediante “()” |
+ |
+ |
+ |
+ |
||
grupo de captura mediante “\ (\)” |
+ |
+ |
||||
secuencia de escape de control |
+ |
|||||
escape de carácter de dsw |
+ |
|||||
secuencia de escape de caracteres |
+ |
+ |
||||
secuencia de escape hexadecimal |
+ |
|||||
escape de identidad |
+ |
+ |
+ |
+ |
+ |
+ |
negativa validar |
+ |
|||||
límite de palabra negativo validar |
+ |
|||||
grupo de la no-captura |
+ |
|||||
repetición no expansiva |
+ |
|||||
secuencia de escape octal |
+ |
|||||
carácter normal |
+ |
+ |
+ |
+ |
+ |
+ |
positivo validar |
+ |
|||||
repetición mediante “{}” |
+ |
+ |
+ |
+ |
||
repetición mediante “\ \ {}” |
+ |
+ |
||||
repetición utilizando “*” |
+ |
+ |
+ |
+ |
+ |
+ |
repita con “?” y “+” |
+ |
+ |
+ |
+ |
||
secuencia de escape de unicode |
+ |
|||||
carácter comodín |
+ |
+ |
+ |
+ |
+ |
+ |
límite de palabra validar |
+ |
detalles semánticos
Delimitador
Un delimitador coincide con una posición de la cadena de destino, no un carácter.Un “^” coincide con el principio de la cadena de destino, y “$” buscar el final de la cadena de destino.
referencia posterior
Una referencia posterior es una barra diagonal inversa seguido por un valor n decimal.Coincide con el contenido del grupo de capturade Enésimo.El valor de n no debe ser mayor que el número de grupos de captura que precedan referencia posterior.En BRE y grep, el valor de n viene determinado por el dígito decimal que sigue a la barra diagonal inversa.En ECMAScript, el valor de n viene determinado por todos los dígitos decimales que siguen inmediatamente a la barra diagonal inversa.Por consiguiente, en BRE y grep, el valor de n nunca es mayor que 9, aunque la expresión regular tiene más de nueve grupos de captura.En ECMAScript, el valor de n es ilimitado.
Ejemplos:
“((a+) (b+))() \ 3 " c+ coincide con la secuencia “el aabbbcbbb” de destino.“Posterior \ 3 " de referencia coincide con el texto del tercer grupo de captura, es decir, “(b+)”.No coincide con la secuencia “aabbbcbb” de destino.
“(a) \ 2 " no es válido.
“(b (((((((((a))))))))))\ 10 " tiene significados diferentes en BRE y en ECMAScript.En BRE referencia posterior es “\ 1 ".La referencia posterior coincide con el contenido del primer grupo de captura (es decir, el con el que inicia “(b” y finaliza con el cierre ")” y va antes de que la referencia posterior), y “0 " final coincide con el carácter ordinario “0 ".en ECMAScript, la referencia posterior es “\ 10".Coincide con el décimo grupo de captura, es decir, el más profundo.
Expresión entre corchetes
Una expresión entre corchetes define un conjunto de caracteres y los elementos el intercalar.Cuando la expresión entre corchetes comienza con el carácter “^” la coincidencia correctamente si coinciden ningún elemento en el determinado el carácter actual en la secuencia de destino.Si no, la coincidencia correctamente si coincide con cualquiera de los elementos del conjunto el carácter actual en la secuencia de destino.
El conjunto de caracteres puede definirse enumerando a cualquier combinación de caracteres individuales, de intervalos de caracteres, clases de carácter, clases de equivalencia, y intercalar símbolos.
Grupo de captura
Marcas de un grupo de captura su contenido como una sola unidad en la gramática y etiquetas de la expresión regular el texto de destino que coincide con su contenido.La etiqueta que está asociado a cada grupo de captura es un número, que se determina el paréntesis de apertura hasta los que marcar los grupos de captura e incluir paréntesis de apertura que marca el grupo actual de captura.En esta implementación, el número máximo de grupos de captura es 31.
Ejemplos:
“ab+” coincide con la secuencia “abb” de destino, pero no coincide con la secuencia “abab” de destino.
“(ab) +” no coincide con la secuencia “abb” de destino, pero coincide con la secuencia “abab” de destino.
“((a+) (b+))(c+)” coincide con la secuencia “aabbbc” de destino y asocia el grupo 1 de captura el subsequence “aabbb”, el grupo 2 catch con el subsequence “aa”, el grupo 3 catch con “bbb”, y el grupo 4 catch con el subsequence “c”.
clase de carácter
Una clase de carácter de una expresión entre corchetes agrega todos los caracteres en la clase denominada al juego de caracteres definido por la expresión entre corchetes.Para crear una clase de caracteres, utilice “[: ” seguido del nombre de la clase seguida de “:]”.Internamente, los nombres de las clases de caracteres reconoce llamando a id = traits.lookup_classname.Un carácter ch pertenece a una clase si traits.isctype(ch, id) devuelve true.La plantilla de regex_traits predeterminado admite los nombres de clase en la tabla siguiente.
Nombre de clase |
Descripción |
---|---|
“alnum” |
minúsculas, letras mayúsculas, y dígitos |
“alfa” |
minúsculas y letras mayúsculas |
“espacio en blanco” |
espacio o una tabulación |
“control” |
los caracteres de la secuencia de escape de caracteres |
“dígito” |
dígitos |
“gráfico” |
minúsculas, las letras, dígitos, y puntuación |
“inferior” |
minúsculas |
“imprimir” |
minúsculas, las letras, dígitos, puntuación, y espacio |
“punct” |
puntuación |
“espacio” |
espacio |
“parte superior |
caracteres en mayúsculas |
“xdigit” |
dígitos, “a”, “b”, “c”, “d”, “e”, “f”, “A”, “b”, “C”, “d”, “E”, “f” |
"d" |
igual que dígito |
"s" |
igual que espacio |
"w" |
igual que alnum |
Intervalo de caracteres
Un intervalo de caracteres en una expresión entre corchetes agrega todos los caracteres del intervalo al juego de caracteres definido por la expresión entre corchetes.Para crear un intervalo de caracteres, el carácter “-” entre el primer y último caracteres del intervalo.Ello incluye en el conjunto todos los caracteres que tienen un valor numérico que sea mayor que o igual al valor numérico del primer carácter, e igual o menor que el valor numérico del último carácter.Observe que este conjunto de caracteres incluidos depende de la representación específica de la plataforma de caracteres.Si el carácter “-” aparece al principio o el final de una expresión entre corchetes, o como el primer o el último carácter de un intervalo de caracteres, se representa.
Ejemplos:
“[0-7]” representa el conjunto de caracteres {“0 ", “1 ", “2 ", “3 ", “4 ", “5 ", “6 ", “7 "}.Coincide con las secuencias “0 " de destino, “1 ", etc., pero no “a”.
En los sistemas que utilizan la codificación de caracteres ASCII, “[HK]” representa el conjunto de caracteres {“h”, “i”, “j”, “k”}.Coincide con “h” de las secuencias de destino, “i”, etc., pero no “\x8A” o “0 ".
En los sistemas que utilizan la codificación de caracteres de EBCDIC, “[HK]” representa el conjunto de caracteres {“h”, “i”, “\x8A', '\x8B', '\x8C', '\x8D', '\x8E', '\x8F”, “\ x90”, “j”, “k”} (se codifica la “h” mientras 0x88 y “k” se codifica como 0x92).Coincide con “h” de las secuencias de destino, “i”, “\x8A”, etc., pero no “0 ".
“[- 0-24]” representa el conjunto de caracteres {“-”, “0 ", “1 ", “2 ", “4 "}.
“[0-2-]” representa el conjunto de caracteres {“0 ", “1 ", “2 ", “-”}.
En los sistemas que utilizan la codificación de caracteres ASCII, “[+--]” representa el conjunto de caracteres {“+”, “,”, “-”}.
Sin embargo, cuando se utilizan los intervalos de la configuración regional, caracteres en un intervalo están determinados por las reglas de intercalación para la configuración regional.Los caracteres que intercalan después del primer carácter en la definición del intervalo y antes de que el último carácter en la definición del intervalo están en el conjunto.Los dos caracteres de extremo también se encuentran en el conjunto.
intercalar el elemento
Un elemento que intercala es una secuencia comodines de varios que se interpreta como un carácter individual.
intercalar símbolo
Un símbolo que intercala en una expresión entre corchetes agrega un elemento que intercala el conjunto definido por la expresión entre corchetes.Para crear un símbolo que intercala, utilice “[”. seguido del elemento que intercala seguido de “.]”.
Secuencia de escape de Control
Una secuencia de escape de control es una barra diagonal inversa seguido por “c” de la letra seguido por una de las letras” a la “z” o “A” a la “z”.Coincide con el carácter de control ASCII que llama la letra.Por ejemplo, “\ CI” coincide con “\ x09” de la secuencia de destino, porque <Ctrl-yo> tiene el valor 0x09.
Escape de carácter de DSW
Un escape de carácter de dsw es un nombre corto para una clase de caracteres, como se muestra en la tabla siguiente.
secuencia de escape |
class denominada equivalente |
Establezca como valor predeterminado la Clase denominada |
---|---|---|
“\ d” |
“[[: d:]]” |
“[[: dígito:]]” |
“\D” |
“[^ [: d:]]” |
“[^ [: dígito:]]” |
“\ s” |
“[[: s:]]” |
“[[: espacio:]]” |
“\S” |
“[^ [: s:]]” |
“[^ [: espacio:]]” |
“\ w” |
“[[: w:]]” |
“[a-zA-Z0-9_] “* |
“\W” |
“[^ [: w:]]” |
“[^a-zA-Z0-9_] “* |
juego de caracteres de *ASCII
clase de equivalencia
Una clase de equivalencia en una expresión entre corchetes agrega todos los caracteres y elementos el intercalar que es equivalente al elemento que intercala en la definición de clase de equivalencia el conjunto definido por la expresión entre corchetes.Para crear una clase de equivalencia, utilice “[=” seguido por un elemento que intercala seguido de “=]”.internamente, dos elementos que intercalan elt1 y elt2 son equivalentes si traits.transform_primary(elt1.begin(), elt1.end()) == traits.transform_primary(elt2.begin(), elt2.end()).
secuencia de escape de caracteres
Una secuencia de escape de caracteres consta de las secuencias de escape habituales de caracteres de lenguaje C, “\\", "\a", "\b", "\f", "\n", "\r", "\t", "\v".These tiene los significados usuales, es decir, barra diagonal inversa, alerta, reserva, FF, nueva línea, retorno de carro, tabulación horizontal, y tabulación vertical, respectivamente.En ECMAScript, “\” y “\ b” no está permitido.(“se permite \ \”, pero es un escape de identidad, no una secuencia de escape de caracteres).
secuencia de escape hexadecimal
Una secuencia de escape hexadecimal es una barra diagonal inversa seguida por la letra “x” seguida de dos dígitos hexadecimales (0-9a-fA-F).Coincide con un carácter en la secuencia de destino que tiene el valor especificado por los dos dígitos.Por ejemplo, se utiliza la “codificación de caracteres \x41" matches the target sequence "A" when ASCII.
Escape de identidad
Un escape de identidad es una barra diagonal inversa seguida de un carácter individual.Coincide con ese carácter.se requiere cuando el carácter tiene un significado especial; mediante el escape de identidad, se quita el significado especial.Por ejemplo:
“a*” coincide con la secuencia “aaa” de destino, pero no coincide con la secuencia “a*” de destino.
“a \ *” no coincide con la secuencia “aaa” de destino, pero coincide con la secuencia “a*” de destino.
El conjunto de caracteres que se permiten en un escape de identidad depende de la gramática de expresiones regulares, como se muestra en la tabla siguiente.
Gramática |
Caracteres de escape permitidos de identidad |
---|---|
BRE, grep |
{ '(', ')', '{', '}', '.', '[', '\', '*', '^', '$' } |
ERE, egre |
{ '(', ')', '{', '.', '[', '\', '*', '^', '$', '+', '?', '|' } |
awk |
ERE más {“”, “/”} |
ECMAScript |
Todos los caracteres excepto los que pueden formar parte de un identificador.Normalmente, esto incluye letras, dígitos, “$”, “_”, y secuencias de escape de unicode.Para obtener más información, vea la especificación del lenguaje ECMAScript. |
carácter individual
Un único carácter en una expresión entre corchetes agrega ese carácter en el juego de caracteres definido por la expresión entre corchetes.En cualquier parte de una expresión entre corchetes excepto al principio, un “^” se representa.
Ejemplos:
“[ABC]” coincide con las secuencias “a” de destino, “b”, y “c”, pero no la secuencia “d”.
“[^abc]” coincide con la secuencia “d” de destino, pero no las secuencias “a” de destino, “b”, o “c”.
“[a^bc]” coincide con las secuencias “a” de destino, “b”, “c”, y “^”, pero no la secuencia “d” de destino.
En todas las gramáticas de expresiones regulares excepto ECMAScript, si “]” es el primer carácter que sigue la apertura “[” o es el primer carácter que sigue un “^ inicial”, se representa.
Ejemplos:
“[]” no es válido porque no hay ninguna “]” finalizar la expresión entre corchetes.
“[] el ABC]” coincide con las secuencias “a” de destino, “b”, “c”, y “]”, pero no la secuencia “d” de destino.
“[^] el ABC]” coincide con la secuencia “d” de destino, pero no las secuencias “a” de destino, “b”, “c”, o “]”.
En ECMAScript, “\]” de uso para representar el carácter “]” en una expresión entre corchetes.
Ejemplos:
“[]” coincide con la secuencia “a” de destino porque la expresión entre corchetes está vacía.
“[\] el ABC]” coincide con las secuencias “a” de destino, “b”, “c”, y “]” pero no la secuencia “d” de destino.
negativa validar
Una negativa validar coincide con todo menos su contenido.No utiliza ningún carácter en la secuencia de destino.¡Por ejemplo, “(?! aa) (a*)” coincide con la secuencia “a” de destino y asocia el grupo 1 de captura el subsequence “a”.No coincide con la secuencia “aa” de destino o la secuencia “aaa” de destino.
Límite de palabra negativo validar
Un límite de palabra negativo validar coincide con si la posición actual en la cadena de destino no están inmediatamente después de un límite de palabras.
grupo de la No-captura
Las marcas de un grupo de la no-captura su contenido como una sola unidad en la gramática de expresiones regulares, pero no etiquetan texto de destino.por ejemplo, “(a) (?: el b) * (c) coincide con el texto de destino “abbc” y asocia el grupo 1 de captura el subsequence “a” y el grupo 2 catch con el subsequence “c”.
repetición no expansiva
Una repetición no expansiva utiliza el subsequence más corta de la secuencia de destino que coincida con el modelo.Una repetición expansiva utiliza el mayor.Por ejemplo, “(a+) (el a*b)” coincide con la secuencia “aaab” de destino.Cuando se utiliza una repetición no expansiva, asocia el grupo 1 de captura el subsequence “a” al principio de la secuencia y el grupo 2 de destino catch con el subsequence “aab” al final de la secuencia de destino.Cuando se utiliza una coincidencia expansiva, asocia el grupo 1 de captura el subsequence “aaa” y el grupo 2 catch con el subsequence “b”.
secuencia de escape octal
una secuencia de escape octal es una barra diagonal inversa seguida por un, dos, o tres dígitos octales (0-7).Coincide con un carácter en la secuencia de destino que tiene el valor especificado por los dígitos.Si todos los dígitos son “0 ", la secuencia no es válida.Por ejemplo, se utiliza la “codificación de caracteres \101" matches the target sequence "A" when ASCII.
Carácter normal
Un carácter normal es cualquier carácter válido que no tiene un significado especial en la gramática actual.
en ECMAScript, los caracteres siguientes tienen significados especiales:
- ^ $ \ .* + ?( ) [ ] { } |
en BRE y grep, los caracteres siguientes tienen significados especiales:
- .[ \
también en BRE y grep, los caracteres siguientes tienen significados especiales cuando se utilizan en un contexto determinado:
“*” tiene un significado especial en todos los casos excepto cuando es el primer carácter de una expresión regular o el primer carácter que sigue un “^ inicial” en una expresión regular, o cuando el primer carácter de un grupo de captura o el primer carácter que sigue un “^ inicial” en un grupo de captura.
“^” tiene un significado especial cuando el primer carácter de una expresión regular.
“$” tiene un significado especial cuando el último carácter de una expresión regular.
en ERE, egrep, y awk, los caracteres siguientes tienen significados especiales:
- .[ \ ( * + ?{ |
también en ERE, egrep, y awk, los caracteres siguientes tienen significados especiales cuando se utilizan en un contexto determinado.
")” tiene un significado especial cuando coincida con el anterior “(”.
“^” tiene un significado especial cuando el primer carácter de una expresión regular.
“$” tiene un significado especial cuando el último carácter de una expresión regular.
Un carácter normal coincide con el mismo carácter en la secuencia de destino.De forma predeterminada, esto significa que la coincidencia correctamente si los dos caracteres se representan mediante el mismo valor.en una coincidencia sin distinción entre mayúsculas y minúsculas, dos caracteres ch0 y ch1 coinciden si traits.translate_nocase(ch0) == traits.translate_nocase(ch1).En una coincidencia configuración regional, dos caracteres ch0 y ch1 coinciden si traits.translate(ch0) == traits.translate(ch1).
positivo validar
Un positivo validar coincide con su contenido, pero no utiliza ningún carácter en la secuencia de destino.
Ejemplos:
¿“(? el =aa) (a*)” coincide con la secuencia “aaaa” de destino y asocia el grupo 1 de captura el subsequence “aaaa”.
“(aa) (a*)” coincide con la secuencia “aaaa” de destino y asocia el grupo 1 de captura el subsequence “aa” al principio de la secuencia y el grupo 2 de destino catch con el subsequence “aa” al final de la secuencia de destino.
¿“(? =aa) (a)|(a)” coincide con la secuencia “a” de destino y asocia el grupo 1 catch a una secuencia vacía (porque se produjo un error en el positivo assert) y grupo 2 catch con el subsequence “a”.También coincide con la secuencia “aa” de destino y asocia el grupo 1 de captura el subsequence “aa” y el grupo 2 catch con una secuencia vacía.
Secuencia de escape Unicode
Una secuencia de escape de unicode es una barra diagonal inversa seguida por la letra “u” seguida de cuatro dígitos hexadecimales (0-9a-fA-F).Coincide con un carácter en la secuencia de destino que tiene el valor especificado por los cuatro dígitos.Por ejemplo, se utiliza la “codificación de caracteres \u0041" matches the target sequence "A" when ASCII.
carácter comodín
Un carácter comodín coincide con cualquier carácter de la expresión de destino excepto una línea nueva.
Límite de palabra
Un límite de palabra aparece en las situaciones siguientes:
El carácter actual es al principio de la secuencia de destino y es uno de los caracteres A-Za-z0-9_.de word
La posición del carácter actual se pasa el final de la secuencia de destino y el último de la secuencia de destino es uno de los caracteres alfabéticos.
El carácter actual es uno de los caracteres alfabéticos y el carácter anterior no es.
El carácter actual no es uno de los caracteres alfabéticos y el carácter anterior es.
Límite de palabra validar
Un límite de palabra validar coincide cuando la posición actual en la cadena de destino es inmediatamente después de un límite de palabras.
La coincidencia y buscar
Para que una expresión regular coincida con una secuencia de destino, la expresión regular completa debe coincidir con la secuencia completa de destino.Por ejemplo, la expresión regular “BCD” coincide con la secuencia “BCD” de destino pero no coincide con la secuencia “abcd” de destino ni la secuencia “bcde” de destino.
Para que una búsqueda de expresiones regulares termina correctamente, debe haber un subsequence en alguna parte de la secuencia de destino que coincide con la expresión regular.La búsqueda encuentra normalmente el subsequence coincidentes de izquierda.
Ejemplos:
Una búsqueda de expresiones regulares “BCD” en la secuencia “BCD” de destino tiene éxito y coincide con la secuencia completa.La misma búsqueda en la secuencia “abcd” de destino también tiene éxito y coincide con los tres caracteres pasan.La misma búsqueda en la secuencia “bcde” de destino también tiene éxito y coincide con los tres primeros caracteres.
Una búsqueda de expresiones regulares “BCD” en la secuencia “bcdbcd” de destino tiene éxito y coincide con los tres primeros caracteres.
Si hay más de un subsequence correspondiente en alguna ubicación en la secuencia de destino, hay dos maneras de elegir el modelo coincidente.La primera coincidencia elige el subsequence encontrado en primer lugar cuando se detecta una expresión regular.la coincidencia más larga elige el subsequence más largo de los que coinciden en esa ubicación.Si hay más de un subsequence que tiene la longitud máxima, la coincidencia más larga elige el encontrado en primer lugar.Por ejemplo, cuando se utiliza la primera coincidencia, la búsqueda de b de la expresión regular “|a.C.” en la secuencia “abcd” de destino coincide con el subsequence “b” porque coincide con el término izquierdo de alternancia ese subsequence; por consiguiente, la primera coincidencia no intenta el término derecho de alternancia.Cuando se utiliza la coincidencia más larga, la misma búsqueda coincide con “a.C.” porque es “a.C.” mayor que “b”.
Una coincidencia parcial tiene éxito si la coincidencia llega al final de la secuencia de destino sin no, aunque no alcanzó el final de la expresión regular.Por consiguiente, después de que una coincidencia parcial tiene éxito, anexar los caracteres en la secuencia de destino puede causar una coincidencia parcial al error.Sin embargo, después de un error de una coincidencia parcial, anexar los caracteres en la secuencia de destino no puede hacer una coincidencia parcial posterior para funcionar correctamente.Por ejemplo, con una coincidencia parcial, “ab” coincide con la secuencia “a” pero no “CA” de destino.
Marcas de formato
Reglas de formato de ECMAScript |
reglas de formato de sed |
Texto de sustitución |
---|---|---|
“$&” |
"&" |
La secuencia de caracteres que coincide con la expresión regular completa ([match[0].first, match[0].second)) |
“$$” |
“$” |
|
|
“\ y” |
"&" |
“$ `” (signo de moneda seguido de cita posterior) |
|
La secuencia de caracteres que precede al subsequence que coincida con la expresión regular ([match.prefix().first, match.prefix().second)) |
“$ '” (signo de moneda seguido de cita adelantada) |
|
La secuencia de caracteres que sigue al subsequence que coincida con la expresión regular ([match.suffix().first, match.suffix().second)) |
“$n” |
“\ n” |
La secuencia de caracteres que coincide con el grupo de captura en la posición n, donde es un número n entre 0 y 9 ([match[n].first, match[n].second) |
|
“\ \ n” |
“\ n” |
“$nn” |
|
La secuencia de caracteres que coincide con el grupo de captura en la posición nn, donde es un número nn entre 10 y 99 ([match[nn].first, match[nn].second) |