Latest web development tutorials

Expresiones regulares - Sintaxis

Regex (expresiones regulares) describe un conjunto de cadenas que se pueden utilizar para comprobar si una cadena contiene una determinada subcadena que ajuste subcadena no sustituir o eliminar una condición coincide con una subcadena de una cadena y así sucesivamente.

  • El catálogo de la columna, dir * .txt ls * .txt o * .txt no se encuentra en una expresión regular, porque no es * * con la expresión regular significado es diferente.
  • El método de construcción de una expresión regular y crear expresiones matemáticas de la misma manera. Es decir, usando una variedad de metacaracteres y operadores pueden combinar expresiones pequeños juntos para crear expresiones más grandes. expresiones regulares componente puede ser un solo carácter, juego de caracteres, seleccione un rango de caracteres, entre los personajes, o cualquier combinación de todos estos componentes.

Las expresiones regulares son el modo de texto consta de caracteres comunes (como letras de la A a la Z) y caracteres especiales (llamados "meta-caracteres") del mismo. Descripción del modo en la búsqueda de texto para que coincida con una o más cadenas. Expresión regular como una plantilla, un modo de caracteres y la cadena de búsqueda para que coincida.

Los caracteres normales

Los caracteres normales no están designados explícitamente como metacaracteres todos los caracteres imprimibles y no imprimibles. Esto incluye todas las letras mayúsculas y minúsculas, todos los dígitos, todos puntuacion y otros símbolos.

los caracteres no imprimibles

los caracteres no imprimibles pueden ser también una parte de la expresión regular. En la siguiente tabla se muestran las secuencias de escape que representan los caracteres no imprimibles:

字符 描述
\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。

Los caracteres especiales

Los llamados caracteres especiales, es que algunos caracteres tienen un significado especial, ya que dice "* .txt" en *, simplemente significa que la representación de cadena de todo sentido. Si desea encontrar el nombre del archivo con el archivo *, lo que necesita para escapar de la *, que es una ventaja frente a \. ls \ *. txt.

Muchos metacaracteres requieren un tratamiento especial cuando se trata de coincidir con ellos. Para hacer coincidir estos caracteres especiales, primero debe hacer que el personaje de "escape", es decir, el carácter de barra invertida (\) delante de ellos. La siguiente tabla muestra los caracteres especiales de expresiones regulares:

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

calificador

Calificador se utiliza para especificar la expresión normal de un determinado componente debe aparecer muchas veces para satisfacer el partido. Hay * o + o? O {n} o {n,} o {n, m} de un total de 6.

expresiones regulares son calificadores:

字符 描述
* 匹配前面的子表达式零次或多次。例如,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?'。请注意在逗号和两个数之间不能有空格。

Dado que el número de capítulo en un documento de entrada grande es probable que más de nueve, por lo que necesita una manera de lidiar con dos o tres números de capítulos. Calificador le da esta capacidad. La siguiente expresión regular detecta un número de bits de títulos de los capítulos numerados:

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

Tenga en cuenta que la clasificación aparece después de la expresión gama. Por lo tanto, se aplica a toda la gama de la expresión, en este caso, sólo el número especificado 0-9 (incluyendo 0 y 9).

+ Calificador no se utiliza aquí, como en la segunda posición trasera no necesariamente tienen que tener un número de posición o. Tampoco usar? Carácter, ya que limita el número de capítulo a sólo dos dígitos. Es necesario para que coincida con caracteres al menos un número y el Capítulo de retroceso.

Si conoce el número de capítulo se limita a sólo 99 capítulos, se puede utilizar la siguiente expresión para especificar al menos una, sino dos dígitos como mínimo.

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

La desventaja de la expresión anterior es mayor que 99 capítulos todavía Sólo número coincide con el comienzo de dos dígitos. Otra desventaja es que el Capítulo 0 también coincidirá. Mejor coincidencia de los dos dígitos de la expresión es el siguiente:

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

o

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

*, +, Y? Calificadores son codiciosos, ya que coincide con la cantidad de texto, sólo por detrás de ellos, además de una? Puede lograrse partido no expansivo o mínima.

Por ejemplo, es posible que la búsqueda de documentos HTML para encontrar adjunto en la sección H1 etiquetas partidas. El texto en el documento de la siguiente manera:

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

Todos los contenidos se ajustan a las siguientes expresiones a partir del signo menor que (<) para cerrar la etiqueta H1 es el símbolo mayor que (>) entre.

/<.*>/

Si sólo necesita para que coincida con el inicio de las etiquetas H1, la siguiente expresión "no voraz" sólo coincide <H1>.

/<.*?>/

Por *, +, o? Después de que el lugar de clasificación? Las expresiones pueden cambiar de "codiciosos" a "no voraz" o mínima expresión coincidente.

localizador

De localización permite una expresión regular se fija al principio o al final de la línea. También le permiten crear una expresión tan regular, estas expresiones regulares aparecen en una palabra, una palabra al principio o al final de una palabra.

Localizador utiliza para describir la cadena o límite de palabra, y $ ^ referirse al principio y al final de la cadena, \ b descripción de los límites antes o después de la palabra, \ B representa un límite de palabra.

expresiones regulares son calificadores:

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

Nota: No se puede utilizar el punto de anclaje y calificador. Porque inmediatamente antes o después de los límites de envoltura o palabra no puede tener más de un lugar, y por lo tanto no permite una expresión tal como ^ *.

Para que coincida con una línea de texto al principio del texto, por favor, empezar a utilizar la expresión n ^ carácter. ^ No utilice este uso de la expresión entre paréntesis dentro de la confusión.

Para que coincida con el texto al final de una línea de texto, ver el final de la expresión usando $ personajes en lo positivo.

Para utilizar los encabezados de sección de la búsqueda cuando el punto de anclaje, la siguiente expresión regular coincide con un título del capítulo, el título contiene sólo dos seguido de un número, y el inicio de la línea:

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

Los verdaderos títulos de los capítulos aparecen sólo al comienzo de la línea, pero es el único texto de la fila. Al parecer, la línea apareció por primera vez al final de la misma fila. La siguiente expresión puede estar seguro de que el partido se especifica único partido y no correspondan a la sección de referencias cruzadas. Sólo mediante la creación de coincidir con el comienzo y el final de una línea de texto de la expresión regular, puede hacerlo.

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

palabra de ajuste de límite es ligeramente diferente, pero las expresiones regulares una capacidad muy importante. límite de palabra es la ubicación y el espacio entre las palabras. No límite de palabra es en cualquier otro lugar. La siguiente expresión coincide con el comienzo de la palabra Capítulo tres caracteres, debido a que estos tres personajes aparecen después de un límite de palabra:

/\bCha/

\ Posición de carácter B es muy importante. Si se encuentra al principio de la cadena a coincidir, se busca una coincidencia en el comienzo de la palabra. Si está en el extremo de la cadena, se busca una coincidencia de al final de una palabra. Por ejemplo, la siguiente expresión búsqueda de palabras ter cadena capítulo, tal como aparece en la parte frontal del límite de palabra:

/ter\b/

La siguiente expresión coincide con la cadena Capítulo apto, pero no coincide con la cadena de aptitud apropiado:

/\Bapt/

Apt palabra cadena aparece en el capítulo no límite de palabra, pero la palabra aparece en la aptitud del límite de palabra. Para el operador límite de palabra B \, la posición no es importante, porque el partido no le importa si es al principio o al final de una palabra.

seleccionar

Utilice paréntesis para encerrar todas las selecciones, con opciones entre adyacentes separados por |. Pero hay un efecto secundario del uso de paréntesis, es coincidencias relevantes serán almacenados en caché, disponible en este momento :? En la primera opción para eliminar este efecto secundario.

En el que no :? captura de un elemento, hay dos no es la captura de elemento = y los dos tienen más sentido, el ex previa a la investigación positiva, en todo empezar a ser emparejados paréntesis es la expresión ??! patrón de posición para que coincida con la cadena de búsqueda, que es previa a la investigación negativo, en cualquier posición de inicio no coincide con el patrón de expresión regular para que coincida con la cadena de búsqueda.

backreferences

Para un patrón regular la expresión o la parte del patrón en ambos lados resultará en paréntesis añadidos partido correspondiente a una memoria intermedia de almacenamiento temporal, cada sub-capturados se almacenan en orden de izquierda a derecha aparece partido en un patrón de expresión regular. Tampón Nº 1 desde el principio, puede almacenar hasta 99 subexpresión capturado. Cada buffer puede usar '\ n' visitar, donde n es un uno o dos dígitos decimales identificar el buffer específico.

Se pueden utilizar los metacaracteres no captura ':?', O volver a escribir la captura, salvo para ignorar el partido relevante '=?'? '.

Backreferences más fácil, uno de los más útiles es la capacidad de proporcionar el texto para encontrar dos palabras que coincidan adyacentes idénticas. Un ejemplo en la siguiente frase:

Is is the cost of of gasoline going up up?

La frase anterior, obviamente, tiene muchas palabras repetidas. Si somos capaces de idear un método para localizar la frase, en lugar de buscar apariciones duplicadas de cada palabra, que cuanto más buena. La siguiente expresión regular utiliza un solo subexpresión para lograrlo:

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

expresiones de captura, como [az] + especificada, incluyendo una o más letras. La segunda parte de la expresión regular es para que coincida con un niño referencia previamente capturado, es decir, la segunda aparición de la palabra solo igualada por la expresión entre paréntesis. \ 1 especifica el primer sub-partido. Word metacaracteres límites aseguran que sólo detectan la palabra completa. De lo contrario, frases como "se emite" o "esto es" y similares no se identifica correctamente esta expresión.

Expresión regular después de variable global (g) indica, esta expresión se aplica a la cadena de entrada puede encontrar en otros tantos partidos. Expresión caso insensible al final de la etiqueta (i) especifica entre mayúsculas y minúsculas. Potencial de correspondencia de etiqueta multi-línea especifica los saltos de línea pueden ocurrir en ambos lados.

Referencias hacia atrás también puede ser un indicador universal de recursos (URI) en sus componentes. Supongamos que desea ser analizado en el siguiente protocolo URI (FTP, HTTP, etc.), las direcciones de dominio y la página / ruta:

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

La siguiente expresión regular proporciona esta funcionalidad:

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

La primera subexpresión entre paréntesis capta la parte del protocolo de la dirección Web. La subexpresión coincide con cualquier palabra de colon y dos barras inclinadas frente. La segunda subexpresión entre paréntesis captura la parte de dirección de dominio de la dirección. Uno o más caracteres que no sea: subexpresión partido / y. La tercera subexpresión entre paréntesis capturar el número de puerto (si se especifica). El sub-expresión coincide con cero o más dígitos después de los dos puntos. Sólo se puede repetir una vez que el sub-expresión. Por último, la cuarta sub-expresión entre paréntesis captura la dirección Web ruta especificada y / o página. Esto no incluye la sub-expresión coincide con ningún espacio # o caracteres de secuencia de caracteres.

La expresión regular se aplica a la anterior URI, la entrada sub-juego contiene los siguientes elementos:

  • La primera subexpresión entre paréntesis contiene "http"
  • La segunda subexpresión entre paréntesis contiene "www.w3cschool.cc"
  • La tercera subexpresión entre paréntesis con "80"
  • El cuarto sub-expresión entre paréntesis contiene "/html/html-tutorial.html"