Esta breve introducción no puede explicar todo lo que hay que saber sobre las expresiones regulares. Para obtener información detallada, consulte la regular-expressions.info .
Muchas aplicaciones y lenguajes de programación tienen su propia implementación de expresiones regulares, a menudo con diferencias leves y en ocasiones significativas con respecto a otras implementaciones. Cuando dos aplicaciones usan una implementación diferente de expresiones regulares, decimos que usan diferentes «sabores de expresiones regulares». Este inicio rápido explica la sintaxis compatible con los tipos de expresiones regulares más populares.
Patrones de texto y coincidencias
Una expresión regular, o regex para abreviar, es un patrón que describe una cierta cantidad de texto. En este sitio web, las expresiones regulares se encuentran sombreados en gris como expresiones regulares . Esta es en realidad una expresión regular perfectamente válida. Es el patrón más básico, simplemente coincide con la expresión regular de texto literal . Los partidos están resaltados en azul en este sitio. Usamos el término «cadena» para indicar el texto al que se aplica la expresión regular. Las cadenas están resaltadas en verde .
Los caracteres con significados especiales en expresiones regulares se resaltan en varios colores diferentes. La expresión regular (? X ) ( [ Rr ] egex p ? ) \? muestra meta tokens en violeta, agrupaciones en verde, clases de caracteres en naranja, cuantificadores y otros tokens especiales en azul y caracteres de escape en gris.
Caracteres literales
La expresión regular más básica consta de un solo carácter literal, como un . Coincide con la primera aparición de ese carácter en la cadena. Si la cadena es Jack es un niño , que coincide con la una después de la J .
Esta expresión regular puede coincidir con la segunda una también. Solo lo hace cuando le dice al motor de expresiones regulares que comience a buscar en la cadena después de la primera coincidencia. En un editor de texto, puede hacerlo utilizando su función «Buscar siguiente» o «Buscar hacia adelante». En un lenguaje de programación, generalmente hay una función separada a la que puede llamar para continuar buscando en la cadena después de la coincidencia anterior.
Doce caracteres tienen significados especiales en expresiones regulares: la barra invertida \ , el símbolo de intercalación ^ , el signo de dólar $ , el punto o punto . , el símbolo de barra o tubería vertical | , el signo de interrogación ? , el asterisco o estrella * , el signo más + , el paréntesis de apertura ( , el paréntesis de cierre ) , el corchete de apertura [ , y la llave de apertura { . Estos caracteres especiales a menudo se denominan «metacaracteres». La mayoría de ellos son errores cuando se usan solos.
Si desea utilizar alguno de estos caracteres como literal en una expresión regular, debe escapar de ellos con una barra invertida. Si desea hacer coincidir 1 + 1 = 2 , la expresión regular correcta es 1 \ + 1 = 2 . De lo contrario, el signo más tiene un significado especial.
Más información sobre los caracteres literales
Caracteres no imprimibles
Puede utilizar secuencias de caracteres especiales para poner caracteres no imprimibles en su expresión regular. Use \ t para hacer coincidir un carácter de tabulación (ASCII 0x09), \ r para retorno de carro (0x0D) y \ n para salto de línea (0x0A). Los elementos no imprimibles más exóticos son \ a (campana, 0x07), \ e (escape, 0x1B), \ f (alimentación de formulario, 0x0C) y \ v (tabulación vertical, 0x0B). Recuerde que los archivos de texto de Windows usan \ r \ n para terminar líneas, mientras que los archivos de texto UNIX usan \ n .
Si su aplicación es compatible con Unicode , use \ uFFFF o \ x {FFFF} para insertar un carácter Unicode. \ u20AC o \ x {20AC} coincide con el signo de moneda del euro.
Si su aplicación no es compatible con Unicode, use \ xFF para hacer coincidir un carácter específico por su índice hexadecimal en el juego de caracteres. \ xA9 coincide con el símbolo de copyright en el juego de caracteres Latin-1.
Todos los caracteres no imprimibles se pueden utilizar directamente en la expresión regular o como parte de una clase de caracteres.
Obtenga más información sobre los caracteres no imprimibles
Clases de caracteres o conjuntos de caracteres
Una «clase de personaje» coincide sólo con uno de varios personajes. Para hacer coincidir una a o una e, use [ ae ] . Puede usar esto en gr [ ae ] y para hacer coincidir el gris o el gris . Una clase de personaje coincide con un solo carácter. gr [ ae ] y no coincide con graay , graey o algo por el estilo. El orden de los caracteres dentro de una clase de caracteres no importa.
Puede utilizar un guión dentro de una clase de caracteres para especificar un rango de caracteres. [ 0-9 ] coincide con un solo dígito entre 0 y 9. Puede utilizar más de un rango. [ 0-9 a-f A-F ] coincide con un solo dígito hexadecimal, sin distinción entre mayúsculas y minúsculas. Puede combinar rangos y caracteres individuales. [ 0-9 a-f x A-F X ] coincide con un dígito hexadecimal o la letra X.
Escribir un signo de intercalación después del corchete de apertura niega la clase de personaje. El resultado es que la clase de personaje coincide con cualquier personaje que no esté en la clase de personaje. q [ ^ x ] coincide con qu en cuestión . No , no coincide con Irak ya que no hay ningún carácter después de la q para la clase de caracteres negada para que coincida.
Más información sobre las clases de personajes
Clases de caracteres taquigráficos
\ d coincide con un solo carácter que es un dígito, \ w coincide con un «carácter de palabra» (caracteres alfanuméricos más guión bajo) y \ s coincide con un carácter de espacio en blanco (incluye tabulaciones y saltos de línea). Los caracteres reales que coinciden con las abreviaturas dependen del software que esté utilizando. En las aplicaciones modernas, incluyen letras y números que no están en inglés.
Obtenga más información sobre las clases de caracteres taquigráficos
El punto coincide (casi) con cualquier personaje
El punto coincide con un solo carácter, excepto los caracteres de salto de línea. La mayoría de las aplicaciones tienen un modo de «punto coincide con todo» o «línea única» que hace que el punto coincida con cualquier carácter, incluidos los saltos de línea.
gr . y coincide con gris , gris , gr% y , etc. Utilice el punto con moderación. A menudo, una clase de personaje o una clase de personaje negada es más rápida y precisa.
Más información sobre el punto
Anclas
Los anclajes no coinciden con ningún carácter. Coinciden con una posición. ^ coincide con el comienzo de la cadena y $ coincide con el final de la cadena. La mayoría de los motores de expresiones regulares tienen un modo «multilínea» que hace que ^ coincida después de cualquier salto de línea y $ antes de cualquier salto de línea. Por ejemplo, ^ b coincide solo con la primera b en bob .
\ b coincide con el límite de una palabra. Un límite de palabra es una posición entre un carácter que puede coincidir con \ w y un carácter que no puede coincidir con \ w . \ b también coincide al principio y / o al final de la cadena si el primer y / o último carácter de la cadena son caracteres de palabra. \ B coincide en todas las posiciones donde \ b no puede coincidir.
Más información sobre las anclas
Alternancia
La alternancia es la expresión regular equivalente a «o». gato | perro coincide con gato en Acerca de perros y gatos . Si la expresión regular se aplica de nuevo, coincide con perro . Puedes agregar tantas alternativas como quieras: cat | perro | ratón | pescado .
La alternancia tiene la precedencia más baja de todos los operadores de expresiones regulares. gato | comida para perros coincide gato o comida para perros . Para crear una expresión regular que coincida con la comida para gatos o la comida para perros , debe agrupar las alternativas: ( gato | perro ) comida .
Más información sobre la alternancia
Repetición
El signo de interrogación hace que el token anterior en la expresión regular sea opcional. colo u ? r coincide con el color o el color .
El asterisco o la estrella le dice al motor que intente hacer coincidir el token anterior cero o más veces. El signo más le dice al motor que intente hacer coincidir el token anterior una o más veces. < [ AZ az ] [ AZ az 0-9 ] * > coincide con una etiqueta HTML sin atributos. < [ AZ az 0-9 ] + > es más fácil de escribir pero coincide con etiquetas no válidas como <1> .
Utilice llaves para especificar una cantidad específica de repetición. Utilice \ b [ 1-9 ] [ 0-9 ] {3} \ b para hacer coincidir un número entre 1000 y 9999. \ b [ 1-9 ] [ 0-9 ] {2,4} \ b coincide con un número entre 100 y 99999.
Más información sobre cuantificadores
Repetición codiciosa y perezosa
Los operadores de repetición o cuantificadores son codiciosos. Expanden la coincidencia tanto como pueden y solo devuelven si deben satisfacer el resto de la expresión regular. La expresión regular < . + > coincide con <EM> primero </EM> en Esta es una <EM> primera </EM> prueba .
Coloque un signo de interrogación después del cuantificador para hacerlo perezoso. < . + ? > coincide con <EM> en la cadena anterior.
Una mejor solución es seguir mi consejo de usar el punto con moderación. Utilice < [ ^ <> ] + > para hacer coincidir rápidamente una etiqueta HTML sin tener en cuenta los atributos. La clase de carácter negado es más específica que el punto, lo que ayuda al motor de expresiones regulares a encontrar coincidencias rápidamente.
Obtenga más información sobre cuantificadores codiciosos y perezosos
Agrupación y captura
Coloque paréntesis alrededor de varias fichas para agruparlas. A continuación, puede aplicar un cuantificador al grupo. Por ejemplo, ¿ Establecer ( valor ) ? coincide con Set o SetValue .
Los paréntesis crean un grupo de captura. El ejemplo anterior tiene un grupo. Después del partido, el grupo número uno no contiene nada si se emparejó Set . Contiene Value si se coincidió con SetValue . La forma de acceder a los contenidos del grupo depende del software o del lenguaje de programación que esté utilizando. El grupo cero siempre contiene toda la coincidencia de expresiones regulares.
Utilice la sintaxis especial Set (?: Value ) ? para agrupar tokens sin crear un grupo de captura. Esto es más eficiente si no planea utilizar los contenidos del grupo. No confunda el signo de interrogación en la sintaxis del grupo que no captura con el cuantificador.
Obtenga más información sobre la agrupación y la captura
Referencias anteriores
Dentro de la expresión regular, puede usar la referencia inversa \ 1 para hacer coincidir el mismo texto que coincidió con el grupo de captura. ( [ abc ] ) = \ 1 coincide con a = a , b = b y c = c . No coincide con nada más. Si su expresión regular tiene varios grupos de captura, se numeran contando sus paréntesis de apertura de izquierda a derecha.
Obtenga más información sobre las referencias retroactivas
Grupos con nombre y referencias inversas
Si su expresión regular tiene muchos grupos, realizar un seguimiento de sus números puede resultar engorroso. Haga que sus expresiones regulares sean más fáciles de leer al nombrar sus grupos. (? <mygroup> [ abc ] ) = \ k <mygroup> es idéntico a ( [ abc ] ) = \ 1 , excepto que puede referirse al grupo por su nombre.
Más información sobre los grupos con nombre
Propiedades Unicode
\ p {L} coincide con un solo carácter que está en la categoría Unicode dada. L significa letra. \ P {L} coincide con un solo carácter que no está en la categoría Unicode dada. Puede encontrar una lista completa de categorías Unicode en el tutorial.
Obtenga más información sobre las expresiones regulares Unicode
Mira alrededor
Lookaround es un grupo especial. Los tokens dentro del grupo se emparejan normalmente, pero luego el motor de expresiones regulares hace que el grupo abandone su coincidencia y se quede solo con el resultado. Lookaround coincide con una posición, al igual que los anclajes. No expande la coincidencia de expresiones regulares.
q (? = u ) coincide con la q en cuestión , pero no en Irak . Esta es una anticipación positiva. La u no forma parte de la coincidencia general de expresiones regulares. La búsqueda anticipada coincide en cada posición de la cadena antes de una u .
q (?! u ) coincide con q en Irak pero no en cuestión . Esta es una mirada hacia el futuro negativa. Se intentan los tokens dentro del lookahead, se descarta su coincidencia y se invierte el resultado.
Para mirar hacia atrás, use mirar atrás. La búsqueda hacia atrás positiva (? <= Un ) b coincide con el b en abc . La búsqueda hacia atrás negativo (? <! Un ) b no coincide con abc .
Puede utilizar una expresión regular en toda regla dentro de lookahead. La mayoría de las aplicaciones solo permiten expresiones de longitud fija en retrospectiva.
Obtenga más información sobre el lookaround
Sintaxis de espacio libre
Muchas aplicaciones tienen una opción que puede etiquetarse como «espacio libre» o «ignorar espacios en blanco» o «comentarios», lo que hace que el motor de expresiones regulares ignore los espacios sin escape y los saltos de línea y que hace que el carácter # comience un comentario que se ejecuta hasta el final de la línea. Esto le permite usar espacios en blanco para formatear su expresión regular de una manera que facilite la lectura para los humanos y, por lo tanto, la haga más fácil de mantener.
Más información sobre el espaciado libre
Fuente: https://www.regular-expressions.info/quickstart.html