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 https | http[s]?:\/\/mydomain\.dev | https://www.mydomain.dev http://mydomain.dev |
| Contiene “www” o “m” o ninguna de las dos | http[s]?:\/\/((m|www)\.)?mydomain\.dev | https://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 directorios | http[s]?:\/\/((m|www)\.)?mydomain\.dev\/([^\/]+)\/([^\/]+)\/([^\/]+)\/([^\/]+)?$ | https://mydomain.dev/directorio/directorio2/directorio3/ |
| directorio + path | http[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
| Modificadores | Descripción |
|---|---|
| i | Insensible a las mayúsculas y minúsculas W |
| g | Busqueda global (global match) |
| m | Busqueda en multiples líneas de texto. (Multiple lines) |
| s | Incluye saltos de línea. Sin él, las nuevas líneas son excluidas. |
Clases de Carácteres (Ranges)
| Expression | Descripció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.
| Greedy | Lazy | Descripcion |
|---|---|---|
| * | *? | 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ácter | Descripción |
|---|---|
| ^ | Comienzo de una línea |
| $ | Final de una línea |
| \A | Comienzo de una cadena de texto (string). Nunca final de línea. (Soporte: Java, .NET, Perl,PHP, Python,Ruby) |
| \Z | Fin de cadena de texto (string). Nunca final de línea. (Soporte: Java, .NET, Perl,PHP, Python,Ruby) |
| \b | Principio o final de palabra (Word boundary) |
| \B | NO 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 | \n | n-é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) |
POSIX
(Portable Operating System Interface)
Manera correcta de utilizarlos:[[:alpha:]] or [^[:alpha:]].
Soporte:
SI: Perl, PHP, Ruby, Unix
NO: Java, JavaScript, .NET, Python
| POSIX | Descripció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ácter | Descripció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ácter | Descripción | Equivalente |
|---|---|---|
| \w | Encuentra un carácter alfanumérico, incluido el guión bajo ( _ ) | [a-z A-Z0-9_] |
| \W | Encuentra cualquier carácter NO alfanumérico | [^a-z A-Z0-9_] |
| \d | Encuentra un dígito | [0-9] |
| \D | Encuentra cualquier carácter que NO es un dígito. | [^0-9] |
| \s | Encuentra un espacio en blanco | [ \t\r\n] |
| \S | Encuentra cualquier carácter que NO es un espacio en blanco. | [^ \t\r\n] |
| \b | Encuentra una coincidencia al inicio o al final de una palabra. | |
| \B | Encuentra una coincidencia que NO està al inicio o al final de una palabra. | |
| \0 | Encuentra un carácter NUL | |
| \n | Salto de línea (new line) | |
| \f | Salto de página (feed) | |
| \r | Retorno de carro (return) | |
| \t | Tabulador | |
| \v | Tabulador vertical | |
| \xxx | Representa un carácter especificado por un número octal xxx | |
| \xdd | Representa un carácter especificado por un número hexadecimal dd | |
| \uxxxx | Representa 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 |
Comodines UNICODE
Soporte:
Si: Java, .NET, Perl, PHP, Ruby
No: JavaScript, Python, Unix
| Descripción | |
|---|---|
| \X | Cará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
- – regEx – la chuleta
- – RegEx – una introducción
- – RegEx en JavaScript
- – regEx para fechas
- – regEx para horas
- – regEx para emails
- – regEx para contraseñas
- – regEx para IPs y URLs
- – regEx para tarjeras de crédito
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 )
