Expresiones regulares

categoria-web

https://regexr.com/ Para probar online ++++
otro: https://regex101.com/

generar online redireccion 301:
https://www.301-redirect.online/htaccess-redirectmatch-generator
https://www.waybackmachinedownloader.com/en/htaccess-redirect-creator/

más enlaces: 202202
https://www.elarraydejota.com/ejemplos-de-redirecciones-utiles-y-comunes-con-mod_rewrite-para-apache/
https://uniwebsidad.com/tutoriales/trucos-y-ejemplos-de-configuracion-del-archivo-htaccess-de-apache
https://www.josedomingo.org/pledin/2011/10/ejemplos-del-modulo-rewrite-en-apache-2-2/

Ayuda del plugin de WordPress: Redirection – https://redirection.me/support/redirect-regular-expressions/

Apache

https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html
explicación español: https://www.elarraydejota.com/ejemplos-de-redirecciones-utiles-y-comunes-con-mod_rewrite-para-apache/

robots.txt

RewriteCond %{HTTP_USER_AGENT} Foobot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} HTTrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} WebCopier [NC,OR]
RewriteCond %{HTTP_USER_AGENT} WebZIP [NC,OR]
RewriteCond %{HTTP_USER_AGENT} wget [NC]
RewriteRule .* - [F,L]

Un ejemplo para redirección 404 y otras de error:

# invoke rewrite engine
RewriteEngine On
RewriteBase /
#Redirect 400,401,403,404,500 to main website
ErrorDocument 400 http://example.com
ErrorDocument 401 http://example.com
ErrorDocument 403 http://example.com
ErrorDocument 404 http://example.com/404-not-found
ErrorDocument 500 http://example
RewriteRule ^index.html$ / [L,R=301]
redirectMatch 301 ^/www.example.com/page-with-backlinks/?$ /

2021/08 Expresiones regulares para SEO (Google Search Console)

https://www.mecagoenlos.com/Posicionamiento/expresiones-regulares-en-google.php

Expresiones regulares útiles para Google Search Console

 ¿Qué hace? Expresión Regular Ejemplo de resultado
 Palabras que llevan tilde, el filtro es sensible a las tildes! c[óo]mo cómo y como
 Tipicas preguntas (cu[aá]ndo)|(d[oó]nde)|(c[óo]mo) Cualquiera de esas KWs
Una única palabra^([^\s]+)$palabra1 pero no palabra1 palabra2
 Dos palabras ^([^\s]+)\s([^\s]+)$ palabra1 palabra2
 Tres palabras ^([^\s]+)\s([^\s]+)\s([^\s]+)$ palabra1 palabra2 palabra3
Cuatro palabras  ^([^\s]+)\s([^\s]+)\s([^\s]+)\s([^\s]+)$ palabra1 palabra2 palabra3 palabra4
 Al menos una palabra dos caracteres y toda la frase teremina en dos digitos ^[a-z]{2,}\s\d\d$palabra1 47
 Expresiones regularas para aplicar en URLs
http o httpshttp[s]?:\/\/mydomain\.devhttps://www.mydomain.dev http://mydomain.dev
 Contiene “www” o “m” o ninguna de las dos http[s]?:\/\/((m|www)\.)?mydomain\.devhttps://mydomain.dev
https://m.mydomain.dev
https://www.mydomain.dev
http://mydomain.dev
Contiene al menos un directorio http[s]?:\/\/((m|www)\.)?mydomain\.com\/([^\/]+)\/ 
https://mydomain.dev
https://mydomain.dev/directorio/
 Al menos dos directorios http[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\/]+)\/([^\/]+)\/  https://mydomain.dev/directorio/directorio2/
Exactamente tres directorioshttp[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\/]+)\/([^\/]+)\/([^\/]+)\/([^\/]+)?$  https://mydomain.dev/directorio/directorio2/directorio3/
directorio + pathhttp[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\/]+)\/([^\/]+)$ https://mydomain.dev/directorio/url.html
 No contiene directorios http[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\/]+)$ https://mydomain.dev/url.html
El primer directorio podría ser /amp/ o no serlo http[s]?:\/\/((m|www)\.)?mydomain\.dev\/(amp\/)?directorio\/url.html  https://mydomain.dev/amp/directorio/url.html

 https://mydomain.dev/directorio/url.html
Sin parámetros http[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\?]+)$  https://mydomain.dev/directorio/url.html

pero no:  https://mydomain.dev/directorio/url.html?hola=adios

Otros enlaces de expresiones regulares guardados

Mozilla https://developer.mozilla.org/es/docs/Web/JavaScript/Guide/Regular_Expressions

Mysql https://dev.mysql.com/doc/refman/8.0/en/regexp.html

La chuleta http://w3.unpocodetodo.info/utiles/regex.php

gran explicación y con ejemplos: https://jarroba.com/busqueda-de-patrones-expresiones-regulares/

Lecciones con ejercicios, curioso: https://regexone.com/

Otra guardada: https://personal.ntu.edu.sg/ehchua/programming/howto/Regexe.html

RegEx (Expresiones Regulares)

No te olvides: por defecto las expresiones regulares son codiciosas (greedy). Esto significa que una expresión regular devuelve la cadena de texto más larga que coincida con ella.
Las expresiones regulares son también ansiosas (eager) por devolver un resultado.

Para verificar tus regEx utiliza RegexPal

Modificadores

ModificadoresDescripción
iInsensible a las mayúsculas y minúsculas Wstar (case insensitive)
gBusqueda global (global match)
mBusqueda en multiples líneas de texto. (Multiple lines)
sIncluye saltos de línea. Sin él, las nuevas líneas son excluidas.

Clases de Carácteres (Ranges)

ExpressionDescripción
[abc]Encuentra uno de los caracteres entre corchetes
[^abc]Encuentra cualquier carácter que NO esté entre corchetes
[0-9]Encuentra un dígito de 0 a 9
[^0-9]Encuentra cualquier carácter que NO sea un dígito de 0 a 9
[A-Z]Encuentra cualquier carácter de
A mayuscula a Z mayuscula
[a-z]Encuentra cualquier carácter de
a minuscula a z minuscula
[A-z]Encuentra cualquier carácter de
A mayuscula a z minuscula
[adgk]Encuentra uno de los caracteres entre corchetes
[^adgk]Encuentra cualquier carácter que NO esté entre corchetes
(a|b)a o b
(…)Se utilizan para agrupar partes de una expresión.

Cuantificadores

El metacarácter ? (detras de otro metacarácter) hace que una expresión regular, habitualmente codiciosa (greedy), se convierta en perezosa (lazy), y resulte en la cadena más corta posible que coincida con ella.

GreedyLazyDescripcion
**?0 o más veces
++?1 o más veces
???0 o 1 veces
{ n }{ n }?n veces
{ n ,}{ n ,}?n o más veces
{ n , m }{ n , m }?De n a m veces

Anclas

MetacarácterDescripción
^Comienzo de una línea
$Final de una línea
\AComienzo de una cadena de texto (string). Nunca final de línea.
(Soporte: Java, .NET, Perl,PHP, Python,Ruby)
\ZFin de cadena de texto (string). Nunca final de línea.
(Soporte: Java, .NET, Perl,PHP, Python,Ruby)
\bPrincipio o final de palabra (Word boundary)
\BNO al principio o al final de una palabra

Retroreferencias (backreference)

Para designar una retroreferencia (backreference), a veces utilizamos la barra inversa ( \ ), otras veces el dólar ( $ ), dependiendo del lenguaje que se utilice.

 Descripción
$n\nn-ésimo grupo no pasivo (no-passive group)
$2\2“xyz” en /^ (abc)(xyz) $/
$2\2“xyz” en /^ (abc(xyz)) $/
? cambia el significado del grupo
: el significado del grupo es: pasivo
?: especifica un grupo pasivo
(passive group / non-capturing group)
$1\1“xyz” en /^ (?:abc)(xyz) $/
(porque el primer grupo es pasivo)

Más sobre retroreferencias

POSIX
(Portable Operating System Interface)

Manera correcta de utilizarlos:
[[:alpha:]] or [^[:alpha:]].

Soporte:
SI: Perl, PHP, Ruby, Unix
NO: Java, JavaScript, .NET, Python

POSIXDescripción
[:alpha:]Caracteres alfabeticos
[a-zA-Z]
[:digit:]Dígitos
[0-9]
[:alnum:]Caracteres alfanuméricos
[a-zA-Z0-9]
[:lower:]Letras minúsculas
[a-z]
[:upper:]Letras mayúsculas
[A-Z]
[:word:]Letras, números y el guion bajo
[A-Za-z0-9_]
[:punct:]Punctuacion y símbolos.
[!”#$%&'()*+,\-./:;<=>?@[\\\]^_`{|}~]
[:space:]Espacios en blanco, incluido <br />
[ \t\r\n\v\f]
[:blank:]Espacio y tabulador
[ \t]
[:print:]Caracteres visibles y espacios (i.e: excepto los carácteres de control)
[\x20-\x7E]
[:graph:]Caracteres visibles (i.e: excepto espacios, carácteres de control, etc.)
[\x21-\x7E]
[:xdigit:]Dígitos hexadecimales
[A-Fa-f0-9]
[:ascii:]Caracteres ASCII
[\x00-\x7F]
[:cntrl:]Caracteres de control
[\x00-\x1F\x7F]

Metacaracteres basicos

Los metacaracteres deben ser escapados cuando se utilicen como caracteres normales.

MetacarácterDescripción
.Cualquier carácter excepto salto de linea
*Indica que el carácter precedente puede ocurri 0 o más veces.
+Indica que el carácter precedente puede ocurri 1 o más veces.
?Indica que el carácter precedente puede ocurrir 0 o 1 vez.
Hace que el metacaracter anterior sea perezoso (lazy). 
[Abre un set de caracteres
]Cierra un set de caracteres
^Niega un set de caracteres ( como en [^0-9] )
–Define un set de caracteres ( de 0 a 9: [0-9] )
{Comienza la repetición cuantificada del carácter precedente {min,max}
}Acaba la repetición cuantificada del carácter precedente {min,max}
(El comienzo de un grupo de caracteres.
)El fin de un grupo de caracteres.
|Alterna entre uno y otro carácter
\El carácter de escape
(Escape character)

Characters específicos

CarácterDescripciónEquivalente
\wEncuentra un carácter alfanumérico, incluido el guión bajo ( _ )[a-z
A-Z0-9_]
\WEncuentra cualquier carácter NO alfanumérico[^a-z
A-Z0-9_]
\dEncuentra un dígito[0-9]
\DEncuentra cualquier carácter que NO es un dígito.[^0-9]
\sEncuentra un espacio en blanco[ \t\r\n]
\SEncuentra cualquier carácter que NO es un espacio en blanco.[^ \t\r\n]
\bEncuentra una coincidencia al inicio o al final de una palabra. 
\BEncuentra una coincidencia que NO està al inicio o al final de una palabra. 
\0Encuentra un carácter NUL 
\nSalto de línea (new line) 
\fSalto de página (feed) 
\rRetorno de carro (return) 
\tTabulador 
\vTabulador vertical 
\xxxRepresenta un carácter especificado por un número octal xxx 
\xddRepresenta un carácter especificado por un número hexadecimal dd 
\uxxxxRepresenta un carácter Unicode especificado por un número hexadecimal xxxx 

Declaraciones
(Assertions)

 Descripción
?=declaración positiva de búsqueda hacia delante
(positive lookahead assertion)
/(?=prematuro)pre/ encuentra pre de prematuro
pero no pre de precavido
/pre(?=maturo)/ encuentra pre de prematuro
pero no pre de precavido
?!declaración negativa de búsqueda hacia delante
(negative lookahead assertion)
/(?!prematuro)pre/ encuentra pre
pero no de prematuro
/pre(?!maturo)/ encuentra pre
pero no de prematuro
?<=declaración positiva de búsqueda hacia atras
(positivee lookbehind assertion)
Soporte:
Si: .NET, Java, Perl, PHP, Python, Ruby 1.9
No:.JavaScript, Ruby 1.8, Unix
/(?<=balon)mano/ encuentra -mano de balonmano
pero no de antemano
?<!declaración negativa de búsqueda hacia atras
(negative lookbehind assertion)
Soporte:
Si: .NET, Java, Perl, PHP, Python, Ruby 1.9
No:.JavaScript, Ruby 1.8, Unix
/(?<!balon)mano/ encuentra -mano
pero no de balonmano

Más sobre declaraciones

Comodines UNICODE

Soporte:
Si: Java, .NET, Perl, PHP, Ruby
No: JavaScript, Python, Unix

 Descripción
\XCarácter comodin Unicode.
Encuentra cualquier carácter incluso salto de linea.
\p{xx}Un carácter con la propiedad xx
\P{xx}Un carácter sin la propiedad xx
M\p{M} Marca (acentos, tilde…etc)
L\p{L} Letra (incluye las letras accentuadas, la ñ…etc)
N\p{N} Numero
S\p{S} Símbolo
C\p{C} Otros

Para más Información:
Propiedades de los caracteres Unicode

RegEx útiles

 Descripción
(\bnegro\b)(?!.*\1)ultima ocurencia de “negro” en un texto
\b\w+\b(?=\.)palabras seguidas de un punto ( . ), pero no el punto.
^#(?:[0-9a-fA-F]{3}){1,2}$un color hex

Artículos relacionados

Enlaces útiles

– Para verificar tus regEx: RegexPal
– PHP.net: Propiedades de los caracteres Unicode
– Más sobre retroreferencias RegEx (backreferences)
– Más sobre declaraciones RegEx ( assertions )


cesar
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.