awesome-cheat-sheets/attach/regex-linux.md
Manuel Vergara 592a2b411a Add cheat sheet of regex to linux
Signed-off-by: Manuel Vergara <manuel@vergaracarmona.es>
2023-08-25 11:27:54 +02:00

52 KiB
Raw Permalink Blame History

Cheat Sheet de Expresiones Regulares (Regex) para Linux

Para una navegación sencilla, un índice de las secciones de la página:

Caracteres

Carácter Leyenda Ejemplo Coincidencia de Ejemplo
\d La mayoría de los motores: un dígito del 0 al 9 file_\d\d file_25
\w La mayoría de los motores: "carácter de palabra": letra ASCII, dígito o guión bajo \w-\w\w\w A-b_1
\s La mayoría de los motores: "carácter de espacio en blanco": espacio, tabulación, salto de línea, retorno de carro, tabulación vertical a\sb\sc a b c
\D Un carácter que no es un dígito según el \d del motor \D\D\D ABC
\W Un carácter que no es un carácter de palabra según el \w del motor \W\W\W\W\W *-+=)
\S Un carácter que no es un carácter de espacio en blanco según el \s del motor \S\S\S\S Yoyo

Cuantificadores

Cuantificador Leyenda Ejemplo Coincidencia de Ejemplo
+ Una o más veces Versión \w-\w+ Versión A-b1_1
{3} Exactamente tres veces \D{3} ABC
{2,4} De dos a cuatro veces \d{2,4} 156
{3,} Tres o más veces \w{3,} tutorial_de_regex
* Cero o más veces A*B*C* AAACC
? Una vez o ninguna plurales? plural

Más Caracteres

Carácter Leyenda Ejemplo Coincidencia de Ejemplo
. Cualquier carácter excepto salto de línea a.c abc
\. Un punto (carácter especial: debe escaparse con \) a\.c a.c
\\ Escapa un carácter especial \\.*\\+\\?\\$^\\/\\\\ .*+?$^/\\
[...] Uno de los caracteres entre corchetes [AEIOU] Una vocal mayúscula
[^...] Uno de los caracteres que no está en los corchetes [^a-z]{3} A1!

Lógica

Lógica Leyenda Ejemplo Coincidencia de Ejemplo
| Alternancia / Operador OR 22|33 33
( … ) Grupo de captura A(nt|pple) Apple (captura "pple")
\\1 Contenido del Grupo 1 r(\\w)g\\1x regex
\\2 Contenido del Grupo 2 (\\d\\d)\\+(\\d\\d)=\\2\\+\\1 12+65=65+12
(?: … ) Grupo no capturador A(?:nt|pple) Apple

Más Espacios en Blanco

Carácter Leyenda Ejemplo Coincidencia de Ejemplo
\t Tabulación T\\t\\w{2} T ab
\r Carácter de retorno de carro Ver abajo
\n Carácter de salto de línea Ver abajo
\r\n Separador de línea en Windows AB\\r\\nCD AB<br>CD
\N Perl, PCRE (C, PHP, R…): un carácter que no es un salto de línea \\N+ ABC
\h Perl, PCRE (C, PHP, R…), Java: un carácter de espacio horizontal: tabulación o separador de espacio Unicode
\H Un carácter que no es un espacio horizontal
\v .NET, JavaScript, Python, Ruby: tabulación vertical
\v Perl, PCRE (C, PHP, R…), Java: un carácter de espacio vertical: salto de línea, retorno de carro, tabulación vertical, avance de página, separador de párrafo o línea
\V Perl, PCRE (C, PHP, R…), Java: cualquier carácter que no sea un espacio vertical
\R Perl, PCRE (C, PHP, R…), Java: un salto de línea (par de retorno de carro + salto de línea, y todos los caracteres coincidentes con \v)

Más Cuantificadores

Cuantificador Leyenda Ejemplo Coincidencia de Ejemplo
+ Una o más veces \\d+ 12345
? Hace que los cuantificadores sean "perezosos" \\d+? 1 en 12345
* Cero o más veces A* AAA
? Hace que los cuantificadores sean "perezosos" A*? Vacío en AAA
{2,4} De dos a cuatro veces \\w{2,4} abcd
? Hace que los cuantificadores sean "perezosos" \\w{2,4}? ab en abcd

Clases de Caracteres

Carácter Leyenda Ejemplo Coincidencia de Ejemplo
[ … ] Uno de los caracteres entre corchetes [AEIOU] Una vocal mayúscula
[ … ] Uno de los caracteres entre corchetes T[ao]p Tap o Top
- Indicador de rango [a-z] Una letra minúscula
[x-y] Uno de los caracteres en el rango de x a y [A-Z]+ GREAT
[ … ] Uno de los caracteres entre corchetes [AB1-5w-z] Uno de: A, B, 1, 2, 3, 4, 5, w, x, y, z
[x-y] Uno de los caracteres en el rango de x a y [ -~]+ Caracteres en la sección imprimible de la tabla ASCII
[^x] Un carácter que no es x [^a-z]{3} A1!
[^x-y] Uno de los caracteres que no está en el rango de x a y [^ -~]+ Caracteres que no están en la sección imprimible de la tabla ASCII
[\d\D] Un carácter que es un dígito o no es un dígito [\d\D]+ Cualquier carácter, incluyendo saltos de línea, que el punto regular no coincide
[\x41] Coincide con el carácter en la posición hexadecimal 41 en la tabla ASCII, es decir, A [\x41-\x45]{3} ABE

Anclajes y Límites

Anclaje Leyenda Ejemplo Coincidencia de Ejemplo
^ inicio de línea según el modo multilinea. (Pero cuando [^dentro de corchetes], significa "no") ^abc .* abc (inicio de línea)
$ final de línea según el modo multilinea. Muchas sutilezas dependientes del motor. .*? el fin$ este es el fin
\A Inicio de cadena (todos los motores principales excepto JS) \Aabc[\d\D]* abc (inicio de cadena)
\z Fin de cadena muy al final de la cadena. No disponible en Python y JS el fin\z esto es...<br>...<b>el fin</b>
\Z Final de cadena o (excepto Python) antes del salto de línea final. No disponible en JS el fin\Z esto es...<br>...<b>el fin</b>\n
\G Inicio de Cadena o Final de Coincidencia Anterior
.NET, Java, PCRE (C, PHP, R…), Perl, Ruby
\b Límite de palabra La mayoría de los motores: posición en la que solo un lado es una letra ASCII, un dígito o un guión bajo Bob.*\bcat\b Bob comió al gato
\b Límite de palabra .NET, Java, Python 3, Ruby: posición en la que solo un lado es una letra Unicode, un dígito o un guión bajo Bob.*\b\кошка\b Bob comió al кошка
\B No es un límite de palabra c.*\Bcat\B.* imitadores

Clases POSIX

Carácter Leyenda Ejemplo Coincidencia de Ejemplo
[:alpha:] PCRE (C, PHP, R…): letras ASCII A-Z y a-z [8[:alpha:]]+ BienHecho88
[:alpha:] Ruby 2: letra Unicode o ideograma [:alpha:]\d]+ кошка99
[:alnum:] PCRE (C, PHP, R…): dígitos y letras ASCII A-Z y a-z [[:alnum:]]{10} ABCDE12345
[:alnum:] Ruby 2: dígito, letra o ideograma Unicode [[:alnum:]]{10} кошка90210
[:punct:] PCRE (C, PHP, R…): signo de puntuación ASCII [[:punct:]]+ ?!.,:;
[:punct:] Ruby: signo de puntuación Unicode [[:punct:]]+ ‽,:〽⁆

Modificadores en Línea

Ninguno de estos es compatible con JavaScript. En Ruby, ten cuidado con (?s) y (?m).

Modificador Leyenda Ejemplo Coincidencia de Ejemplo
(?i) Modo insensible a mayúsculas y minúsculas
(excepto JavaScript)
(?i)Lunes lunES
(?s) Modo DOTALL (excepto JS y Ruby). El punto (.) coincide con caracteres de nueva línea (\r\n). También conocido como "modo de línea única" porque el punto trata la entrada completa como una sola línea (?s)Desde A.*hasta Z Desde A<br>hasta Z
(?m) Modo multilinea (excepto Ruby y JS) ^ y $ coinciden al principio y al final de cada línea (?m)1\r\n^2$\r\n^3$ 1<br>2<br>3
(?m) En Ruby: lo mismo que (?s) en otros motores, es decir, modo DOTALL, es decir, el punto coincide con saltos de línea (?m)Desde A.*hasta Z Desde A<br>hasta Z
(?x) Modo de espaciado libre (excepto JavaScript). También conocido como modo de comentario o modo de espacio en blanco (?x) # este es un<br># comentario<br>abc # escribir en varias<br># líneas<br>[ ]d # los espacios deben estar<br># en corchetes abc d
(?n) .NET, PCRE 10.30+: solo captura con nombre Convierte todos los (paréntesis) en grupos de no captura. Para capturar, usa grupos con nombre.
(?d) Java: solo saltos de línea de Unix El punto y los anclajes ^ y $ solo se ven afectados por \n
(?^) PCRE 10.32+: desactiva modificadores Desactiva los modificadores ismnx

Búsquedas Adelante y Atrás

Búsqueda Leyenda Ejemplo Coincidencia de Ejemplo
(?=…) Búsqueda positiva adelante (?=\d{10})\d{5} 01234 en 0123456789
(?<=…) Búsqueda positiva atrás (?<=\d)gato gato en 1gato
(?!…) Búsqueda negativa adelante (?!teatro)el\w+ tema
(?<!…) Búsqueda negativa atrás \w{3}(?<!mon)stro Munster

Operaciones de Clase de Caracteres

Operación de Clase Leyenda Ejemplo Coincidencia de Ejemplo
[…-[…]] .NET: sustracción de clase de caracteres. Un carácter que está en los de la izquierda, pero no en la clase sustraída. [a-z-[aeiou]] Cualquier consonante minúscula
[…&[…]] .NET: intersección de clase de caracteres. Un carácter que está en ambos lados [A-Za-z&&[aeiou]] Vocales en mayúsculas o minúsculas
[…] .NET, PCRE (C, PHP, R…), Perl, Ruby [aeiou] Cualquier vocal minúscula
`(?(?=…) )` .NET, PCRE (C, PHP, R…), Perl: subpatrón condicional. Si la expresión en el lado izquierdo del coincide, intenta el subpatrón del lado derecho. De lo contrario, no hace nada.

Propiedades Unicode y Bloques

Propiedad Unicode o Bloque Leyenda Ejemplo Coincidencia de Ejemplo
\p{Lu} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: una letra en mayúsculas Unicode ^\p{Lu}.*$ Ábaco
\p{IsGreek} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: bloque Unicode \p{IsGreek}\p{Lu}{2} ΑΒΓ

Scripts Unicode

Script Unicode Leyenda Ejemplo Coincidencia de Ejemplo
\p{Latin} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: un carácter en el script Unicode \p{Latin}\p{Latin} abcde
\P{Latin} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: un carácter que no está en el script Unicode \P{Latin} Ω本Є

Bloques Unicode

Bloque Unicode Leyenda Ejemplo Coincidencia de Ejemplo
\p{InGreek} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: un carácter en el bloque Unicode \p{InGreek}\p{Lu} ΔΕΛΤΑ
\p{IsBasicLatin} .NET, Java, PCRE (C, PHP, R…), Perl, Ruby: un carácter en el bloque Unicode \p{IsBasicLatin}

Comentarios

Comentario Leyenda Ejemplo Coincidencia de Ejemplo
(?#…) Comentario (?#hola)

Reemplazar con Referencias

Referencia Leyenda Ejemplo Coincidencia de Ejemplo
$1, ${1} El contenido del primer grupo de captura (\d)\s+ 1 en 1 2 3
$2, ${2} El contenido del segundo grupo de captura (\d)\s+(\d) 2 en 1 2 3
$+, ${+} El contenido del último grupo de captura
$& La cadena coincidente completa (\d)\s+ 1 en 1 2 3
`$`` El texto antes de la cadena coincidente (\d)\s+ en 1 2 3
$' El texto después de la cadena coincidente (\d)\s+ 2 3 en 1 2 3
$n Cualquier número (\d)\s+(\d) 2 en 1 2 3
${name} Cualquier nombre (?<num>\d)\s+(?<num>\d) 2 en 1 2 3

Grupos Condicionales

Grupo Condicional Leyenda Ejemplo Coincidencia de Ejemplo
`(?(?=…) )` Si la expresión adelante coincide, entonces coincide con el grupo vacío. De lo contrario, no hace nada. `(?(?=1)\d
`(?(1)a b)` Si el grupo 1 coincide, coincide con "a". De lo contrario, coincide con "b". `(\d)(?(1)\d

Comprobación de Cadenas

Comprobación de Cadena Leyenda Ejemplo Coincidencia de Ejemplo
`(?(1)a b)` Si 1 coincide, coincide con "a". De lo contrario, coincide con "b". `(?(\d)\d

Modificadores en Línea

Estos solo son compatibles con Perl. Los modos x, d, s y m afectan a toda la expresión. Los modos i y U solo afectan a las partes específicas. Si se combinan, aparece la nube de puntos.

Modificador Leyenda Ejemplo Coincidencia de Ejemplo
(?imsx-imsx) Activa y desactiva los modos (?i)hola(?-i) hola(?i) hola hola

Átomos Predefinidos

Átomo Predefinido Leyenda Ejemplo Coincidencia de Ejemplo
. Coincide con cualquier carácter excepto un salto de línea. Si se activa el modo /s, también coincide con saltos de línea (?s) hola\nmundo
\w Coincide con una letra ASCII, un dígito o un guión bajo (equivale a [a-zA-Z0-9_]) \w{5} alpha
\W Coincide con cualquier carácter que no sea una letra ASCII, un dígito o un guión bajo (equivale a [^a-zA-Z0-9_]) \W{5} !@#$%
\s Coincide con un espacio en blanco (espacio, tabulación, salto de línea, retorno de carro, avance de página, espacio de línea, espacio en blanco sin separar, espacio ideográfico) \s\s
\S Coincide con cualquier carácter que no sea un espacio en blanco \S\S 12
\d Coincide con un dígito (equivale a [0-9]) \d{3} 123
\D Coincide con cualquier carácter que no sea un dígito \D{3} abc
\b Coincide con un límite de palabra \bcat\b el gato
\B Coincide con cualquier posición que no sea un límite de palabra \Bcat\B imitadores
(?i) Modo insensible a mayúsculas y minúsculas (?i)ABC abc
(?s) Modo DOTALL. El punto (.) coincide con cualquier carácter, incluido un salto de línea (\n) (?s)a.b a\nb
(?m) Modo multilinea. ^ y $ coinciden con el inicio y el final de cada línea (?m)^abc$ abc en abc<br>def
(?x) Modo de espaciado libre. Ignora los espacios en blanco y los comentarios (?x) ab c abc
(?n) Solo captura con nombre `(?(?=d)d D)`
(?^) Desactiva los modificadores (?i)(?^i)abc abc
(?=…) Búsqueda positiva adelante a(?=b) a en ab
(?<=…) Búsqueda positiva atrás (?<=a)b b en ab
(?!…) Búsqueda negativa adelante a(?!b) a en ac
(?<!…) Búsqueda negativa atrás (?<!a)b b en cb
`(?(?=…) )` Grupo condicional `(?(?=a)b
`(?(1)a b)` Grupo condicional `(a)(?(1)b
`(?(\d)\d -)` Comprobación de cadena `(?(\d)\d
. Punto . Cualquier carácter
\p{Lu} Letra en mayúsculas Unicode \p{Lu} A
\p{IsGreek} Bloque Unicode \p{IsGreek} α
\p{Latin} Carácter en el script Unicode \p{Latin} a
\p{InGreek} Carácter en el bloque Unicode \p{InGreek} α
\p{IsBasicLatin} Carácter en el bloque Unicode \p{IsBasicLatin} a

Caracteres Especiales

Carácter Especiale Descripción
\ Escapa un carácter especial
^ Coincide con el principio de la cadena o el inicio de una línea (modo multilinea)
$ Coincide con el final de la cadena o el final de una línea (modo multilinea)
. Coincide con cualquier carácter excepto un salto de línea
[ y ] Delimita una clase de caracteres
( y ) Delimita un grupo de captura
? Hace que el elemento anterior sea opcional. También se usa en las búsquedas adelante y atrás
* Coincide con el elemento anterior 0 o más veces
+ Coincide con el elemento anterior 1 o más veces
` `
{ y } Cuantificadores. Especifica un rango o un número exacto de repeticiones
\d Coincide con un dígito (0-9)
\D Coincide con cualquier carácter que no sea un dígito
\w Coincide con una letra, un dígito o un guión bajo (caracteres de palabra)
\W Coincide con cualquier carácter que no sea una letra, un dígito o un guión bajo
\s Coincide con un espacio en blanco (espacio, tabulación, salto de línea, retorno de carro, avance de página, espacio de línea, espacio en blanco sin separar, espacio ideográfico)
\S Coincide con cualquier carácter que no sea un espacio en blanco
\b Coincide con un límite de palabra
\B Coincide con cualquier posición que no sea un límite de palabra
\n Coincide con un salto de línea (newline)
\r Coincide con un retorno de carro (carriage return)
\t Coincide con un tabulador horizontal
\xhh Coincide con un carácter ASCII hexadecimal (por ejemplo, \x20 para espacio)
\uhhhh Coincide con un carácter Unicode hexadecimal (por ejemplo, \u00A9 para el símbolo de derechos de autor)

Estructura de Alternancia

Estructura de Alternancia Leyenda Ejemplo Coincidencia de Ejemplo
`(?(?=…) )` Si la expresión adelante coincide, entonces coincide con el grupo vacío. De lo contrario, no hace nada. `(?(?=1)\d
`(?(1)a b)` Si el grupo 1 coincide, coincide con "a". De lo contrario, coincide con "b". `(\d)(?(1)\d

Recetas de Reemplazo

Receta de Reemplazo Leyenda Ejemplo Coincidencia de Ejemplo
$1 Contenido del primer grupo de captura (\d)\s+ 1 en 1 2 3
$2 Contenido del segundo grupo de captura (\d)\s+(\d) 2 en 1 2 3
$+ Contenido del último grupo de captura
$& Cadena coincidente completa (\d)\s+ 1 en 1 2 3
`$`` Texto antes de la cadena coincidente (\d)\s+ en 1 2 3
$' Texto después de la cadena coincidente (\d)\s+ 2 3 en 1 2 3
$n Cualquier número (\d)\s+(\d) 2 en 1 2 3
${name} Cualquier nombre (?<num>\d)\s+(?<num>\d) 2 en 1 2 3

Ejemplos de Búsqueda

Ejemplo de Búsqueda Leyenda Ejemplo Coincidencia de Ejemplo
[A-Za-z] Cualquier letra en mayúscula o minúscula [A-Za-z] A en Apple
\d{3} Tres dígitos \d{3} 123 en 12345
`(gato perro)` Coincide con "gato" o "perro" `(gato
^Inicio Coincide con "Inicio" al principio de la cadena o de una línea ^Inicio Inicio en Inicio del día
Final$ Coincide con "Final" al final de la cadena o de una línea Final$ Final en El Final
.* Cualquier carácter 0 o más veces .* Hola Mundo!
\b\w+\b Cualquier palabra completa \b\w+\b Hola en Hola Mundo!
(?>patrón) Patron no capturado (?>patrón) Coincidencia completa
(?=adelante) Búsqueda positiva adelante (?=adelante) Coincide en la posición antes de "adelante"
(?<=atrás) Búsqueda positiva atrás (?<=atrás) Coincide en la posición después de "atrás"
(?!no adelante) Búsqueda negativa adelante (?!no adelante) Coincide en cualquier posición que no esté seguida por "no adelante"
(?<!no atrás) Búsqueda negativa atrás (?<!no atrás) Coincide en cualquier posición que no esté precedida por "no atrás"
(?i)mayusculas Coincide de manera insensible a mayúsculas y minúsculas (?i)mayusculas MAYUSCULAS o mayusculas
(?s)abc.def El punto coincide con saltos de línea (?s)abc.def abc
def en abc
def
(?m)^Inicio Coincide con "Inicio" al principio de una línea (?m)^Inicio Inicio en Inicio del día
(?x) hola mundo Ignora espacios en blanco y comentarios (?x) hola mundo holamundo
`(?(?=condición)verdadero falso)` Grupos condicionales `(?(?=1)d
`(?(1)a b)` Grupos condicionales `(a)(?(1)b
`(?(\d)\d -)` Comprobación de cadena `(?(\d)\d
\p{Lu} Coincide con una letra en mayúsculas Unicode \p{Lu} Á en Ábaco
\p{IsGreek} Coincide con un carácter en el bloque Unicode "Greek" \p{IsGreek} α en αΒΓ
\p{Latin} Coincide con un carácter en el script Unicode "Latin" \p{Latin} a en abcde
\p{InGreek} Coincide con un carácter en el bloque Unicode "Greek" \p{InGreek} Δ en ΔΕΛΤΑ
\p{IsBasicLatin} Coincide con un carácter en el bloque Unicode "Basic Latin" \p{IsBasicLatin} a en
\. Coincide con un punto literal \. . en www.example.com
\w{4} Cuatro caracteres de palabra \w{4} jump en jump over
\W{3} Tres caracteres que no son de palabra \W{3} @#$ en @#$%!
\s\s Dos espacios en blanco \s\s en Hello World
\S\S Dos caracteres que no son espacios en blanco \S\S He en Hello World
\d{2,4} Dos a cuatro dígitos \d{2,4} 123 en 12345
a* Cero o más "a" a* aaa en aaabbb
b+ Una o más "b" b+ bbb en aaabbb
c? Cero o un "c" c? c en abc
`(a b)` "a" o "b" `(a
`(a b c)` "a", "b" o "c"
(abc)+ "abc" una o más veces (abc)+ abcabc en abcabcabc
[aeiou] Cualquier vocal [aeiou] e en hello
[A-Za-z] Cualquier letra en mayúscula o minúscula [A-Za-z] H en Hello
[^0-9] Cualquier carácter que no sea un dígito [^0-9] H en H3llo
(?!no) Búsqueda negativa adelante (?!no) ha en hasta
(?<=pre) Búsqueda positiva atrás (?<=pre) post en prepost
(?i)abc Coincide de manera insensible a mayúsculas y minúsculas (?i)abc ABC o abc
(?s)h.b El punto coincide con saltos de línea (?s)h.b h\nb en h\nb
(?x) hola mundo Ignora espacios en blanco y comentarios (?x) hola mundo holamundo
`(?(\d)\d -)` Comprobación de cadena `(?(\d)\d
(?<=antes)b Búsqueda positiva atrás (?<=antes)b b en antesb
\b\w+\b Palabra completa \b\w+\b Hola en ¡Hola Mundo!
\B!\B Posición que no es un límite de palabra \B!\B ! en Hola!Mundo
(?i)(?^i)abc Desactiva modificadores (?i)(?^i)abc abc en ABC
(?i)mayusculas Coincide de manera insensible a mayúsculas y minúsculas (?i)mayusculas MAYUSCULAS o mayusculas
(?s)abc.def El punto coincide con saltos de línea (?s)abc.def abc
def en abc
def
(?m)^Inicio Coincide con "Inicio" al principio de una línea (?m)^Inicio Inicio en Inicio del día
(?x) hola mundo Ignora espacios en blanco y comentarios (?x) hola mundo holamundo
`(?(?=condición)verdadero falso)` Grupos condicionales `(?(?=1)d
`(?(1)a b)` Grupos condicionales `(a)(?(1)b
`(?(\d)\d -)` Comprobación de cadena `(?(\d)\d
\p{Lu} Letra en mayúsculas Unicode \p{Lu} Á en Ábaco
\p{IsGreek} Bloque Unicode \p{IsGreek} α en αΒΓ
\p{Latin} Carácter en el script Unicode "Latin" \p{Latin} a en abcde
\p{InGreek} Carácter en el bloque Unicode "Greek" \p{InGreek} Δ en ΔΕΛΤΑ
\p{IsBasicLatin} Carácter en el bloque Unicode "Basic Latin" \p{IsBasicLatin} a en