Hola, les saluda Miguel y esta vez les traigo un tutorial.
Índice
Qué son, personajes especiales que debe conocer y recursos para ayudarlo a construirlos
Inevitablemente, la variedad de formas en que uno puede ingresar a la Ingeniería de Software hace que muchos de nosotros aprendamos y (en este caso no aprendamos) varios conceptos diferentes.
Quizás uno de los conceptos más útiles que un ingeniero de Software puede comprender y utilizar son las expresiones regulares.
Es posible que los haya encontrado antes y se hayan quedado completamente perplejos por los personajes que ve antes, o que ya los haya usado y desee obtener una comprensión más completa.
Este artículo tiene como objetivo definir qué son las expresiones regulares, sus conceptos básicos y cómo puede usarlas, y proporcionar recursos útiles para probar las expresiones RegEx
y promover su aprendizaje.
Definición de expresiones regulares
Las expresiones regulares (o regex para abreviar), nos permiten definir y establecer reglas para verificar si existe un patrón de caracteres en una cadena de texto o no.
Las expresiones regulares nos ayudan a relacionar, localizar y administrar texto, proporcionando una forma rápida y relativamente fácil de manipular datos, particularmente en programas grandes y complejos.
Una secuencia o patrón de caracteres que se usa para verificar la existencia o no existencia de un patrón en una cadena de texto.
Detrás de escena, manualestutor.com debería (nunca se sabe) usar una expresión regular para validar que el formato de la dirección de correo electrónico es válido o que la contraseña es válida.
Normalmente aparece como ese pequeño mensaje molesto que dice, «tu contraseña no contiene uno de los siguientes caracteres especiales: ?
, !
, .
, "
, etc.”.
Como ejemplo rápido, podríamos usar la siguiente expresión regular para filtrar correos electrónicos en una cadena de texto que termine en "@ gmail.com"
:
(@gmail. * \. com $)
En realidad, esto podría no ser un uso práctico de una expresión regular, pero demuestra la capacidad de la expresión regular para probar una cadena para un patrón que coincida con caracteres específicos, en este caso, la cadena de texto termina en "@ gmail.com"
.
Conceptos básicos de la expresión regular
Una expresión regular se construye combinando letras y caracteres. En un nivel simple, si desea probar la palabra 'manzana'
o 'pera'
, puede ingresar esto:
r" apple r" pear
Una cadena que contenga la palabra "manzana"
en la primera prueba o una cadena que contenga la palabra "pera"
en la segunda prueba ambas pasarán.
En este sentido, la mayoría de letras y caracteres coincidirán, sin embargo, hay caracteres y caracteres especiales que tienen un significado específico en una expresión regular, estos se enumeran a continuación y se analizarán con más detalle:
- Metacaracteres.
- Secuencias especiales.
- Secuencias de escape.
- Clases de personajes.
- Indicadores de ocurrencia.
- Colocar anclajes.
También discutiremos el concepto de emparejamiento codicioso vs no codicioso en expresiones regulares.
Esto parece mucho que cubrir, pero no se preocupe, ya que hay un resumen al final del artículo con las definiciones clave incluidas, así como varios recursos útiles para ayudarlo a crear y recordar expresiones regulares.
Los metacaracteres son caracteres con un significado especial en una expresión regular. La siguiente tabla muestra algunos metacaracteres de expresiones regulares comunes y la definición de cada metacaracteres:
Metacaracter | Descripción . Encuentra cualquier carácter ^ Inicio de cadena $ Fin de cadena * Coincide cero o más veces + Coincide una o más veces ? Coincide con 0 o 1veces {} Coincide con todos dentro de una cantidad determinada de veces [] Especifica un conjunto de caracteres para que coincidan \ Escapa metacaracteres para emparejarlos en patrones | Especifica a o b (a | b) () Captura todos los adjuntos
Para ayudarlo a comprender mejor cada metacaracter en sí, a continuación se muestran ejemplos de cada metacaracter en acción.
. Regular Expression r” . Test String word
En este ejemplo, el metacaracter '.'
coincidirá con cualquier carácter de la cadena de prueba. Por lo tanto, la cadena de prueba "palabra"
pasará en todos los casos.
^ Regular Expression r” ^word Test String word
El metacaracter '^'
coincide con el comienzo de la cadena sin consumir ningún carácter. Esto significa que la expresión regular está probando "palabra"
al comienzo de la cadena de prueba.
Si cambiamos la cadena de prueba a "una palabra"
en lugar de "palabra"
, la cadena de prueba no coincidiría con la expresión regular porque "palabra"
no está al principio de la cadena.
$ Regular Expression r” word$ Test String word
En este ejemplo, el metacaracter prueba la "palabra"
al final de la cadena de prueba. En contraste con lo anterior, si cambiamos la cadena de prueba a "una palabra"
, la cadena de prueba pasaría porque "palabra"
está al final de la cadena.
+ Regular Expression r” a+ Test String aa
Como el metacaracter '+'
prueba uno o más caracteres consecutivos, la cadena de prueba 'aa'
pasaría ya que la expresión regular ha identificado dos caracteres 'a'
.
? Regular Expression r” ba? Test String ba b a
El metacaraácter '?'
probará un personaje una o más veces. En este contexto, la expresión regular está probando el carácter "ba"
o más veces y no el carácter "a"
en sí.
En la cadena de texto "ba"
pasa cuando coincide con "ba?"
regex pero "b"
también pasará porque la expresión regular está probando el carácter "b"
que no va seguido de un carácter especial.
[] Regular Expression r” [abc] Test String aa bb ccc
El metacaracter de corchetes también se conoce como clase de caracteres y prueba un conjunto de caracteres entre corchetes.
Por lo tanto, la cadena de prueba pasará completamente como "a"
, "b"
y "c"
se especifican como caracteres dentro de los corchetes.
\ Regular Expression r” Ahello Test String hello
El metacaracter de barra invertida se discutirá con más detalle más adelante, pero esencialmente indica una secuencia especial.
En este ejemplo, "A"
especifica el comienzo de una línea, por lo que "hola"
pasaría la prueba.
| Regular Expression r” a|b Test String a hello b
El "|"
regex indica o con esta expresión regular especificando los caracteres "a"
o "b"
. Por lo tanto, la cadena de prueba coincidiría con "a"
y "b"
en la cadena de prueba, pero no con la palabra "hola"
ni con los espacios.
{} Regular Expression r” a3 Test String aaa
El metacaracter de corchete especifica el número de apariciones de un carácter. En este ejemplo, la expresión regular busca el patrón de 3 caracteres "a"
consecutivos, que proporciona la cadena de prueba.
(…) Regular Expression r” (abc) Test String a b abc
Esto coincide con cualquier expresión regular que se encuentre entre paréntesis, lo que indica el inicio y el final de un grupo literalmente.
La cadena de prueba en este ejemplo no coincidiría con el carácter "a"
o el carácter "b"
, pero coincidiría con los caracteres "abc"
.
Una secuencia especial es una barra invertida '\'
seguido de uno de los caracteres de la lista siguiente, cada uno de los cuales tiene un significado especial en una expresión regular:
Secuencias especiales | Descripción \A Coincide con el carácter al principio de la cadena \b Coincide con el carácter al principio o al final \B Coincide con el carácter NO al principio o al final \w Coincide con cualquier carácter de palabra \W Coincide con cualquier carácter que no sea una palabra \d Coincide con cualquier dígito, es decir. 0-9 \D Coincide con cualquier carácter que no sea un dígito \s Coincide con cualquier carácter de espacio en blanco \S Coincide con cualquier carácter que no sea un espacio en blanco \O Coincide con cualquier carácter NULL \n Coincide con cualquier carácter de nueva línea \f Coincide con cualquier carácter de alimentación de formulario \t Coincide con cualquier carácter de tabulación \v Coincide con nuevas líneas y pestañas verticales \Z Coincide con el carácter especificado al final de una cadena
Las secuencias de escape se utilizan para hacer coincidir caracteres especiales en una expresión regular. Esto significa que podemos usar un carácter especial con el prefijo "\"
. Por ejemplo;
Escape Sequence | Description \. Matches “.” \+ Matches “+” \( Matches “(“
Las clases de caracteres especifican en una expresión regular los caracteres que desea hacer coincidir entre corchetes. Nos permiten encontrar un rango de caracteres en una cadena de texto.
A continuación, se muestran algunos corchetes comunes y una descripción de lo que nos permite especificar en una expresión RegEx
:
Soportes | Descripción [abc] Encuentra cualquier carácter entre corchetes [^abc] Encuentra cualquier carácter que NO esté entre corchetes [a-z] Coincide con cualquier carácter entre la a y la z [^a-z] Coincide con cualquier carácter excepto aquellos en el rango az [a-\A-Z] Coincide con cualquier carácter en el rango az o AZ [0-9] Encuentra un dígito entre corchetes [^0-9] Encuentra un dígito que NO esté entre corchetes [(] Coincide con el literal '('
Por ejemplo, si desea hacer coincidir una "a"
o una "e"
, utilice [ae]
. Si especificamos el mundo "hola"
como él [ae]
entonces coincidiría con "hola"
o "hola"
.
Las clases de caracteres son un uso extremadamente común de las expresiones regulares, y en el ejemplo de correo electrónico que se usó al comienzo de este artículo, podríamos probar los casos en los que un usuario ingresa accidentalmente "@ gmeil.com"
en lugar de "@ gmail.com"
.
Algunos metacaracteres mencionados anteriormente también se incluyen en la categoría de indicadores de ocurrencia.
Estos son esencialmente metacaracteres que coinciden con varias instancias de un carácter, grupo de caracteres o clase de caracteres en una cadena.
Se permiten varios indicadores de ocurrencia dentro de una expresión regular. Estos indicadores se enumeran a continuación:
Indicadores de ocurrencia | Descripción + Coincide una o más veces ? Coincide con cero o una vez * Coincide con cero o más veces {n} Coincide exactamente n número de veces {n,} Coincide al menos n número de veces {n,m} concordancias de n a m veces {,n} Coincide con hasta n veces
Los anclajes no coinciden con ningún carácter, sino que coinciden con una posición, generalmente antes, después o entre caracteres.
Anclas | Descripción ^ Inicio de cadena $ Fin de cadena \A Inicio de cadena \Z Fin de cadena \b Coincide entre el inicio y el final de una palabra \B Inverse (sin comienzo o sin final de una palabra)
La repetición son operadores codiciosos por defecto, lo que significa que primero coinciden con tantos caracteres posibles. Esto significa que si probó la siguiente expresión regular:
Regular Expression {START}.*{END} Test String {START} Hello world 2{END} and {START} hello world 2{END}
La expresión regular devolvería una coincidencia completa:
Full Match: {START} Hello world 2{END} and {START} hello world 2{END}
Sin embargo, podemos gestionar esto poniendo un "?"
adicional después de los operadores de reptiles para limitar su codicia.
Ahora, cuando probamos la expresión de expresiones regulares a continuación con la misma cadena de prueba, en realidad devolvemos dos coincidencias.
Regular Expression {START}.*?{END} Test String {START} Hello world 1{END} and {START} hello world 2{END}Match 1: {START} Hello world 1{END} Match 2: {START} Hello world 2{END}
Ahora que hemos realizado un recorrido por las expresiones regulares y los diferentes metacaracteres utilizados, lo siguiente que debemos hacer es practicar.
A continuación se muestran algunos recursos que, con suerte, deberían ayudarlo a crear y probar sus expresiones regulares.
Recursos
Existe una variedad de fuentes para probar expresiones regulares, algunas de las cuales he enumerado a continuación.
Son extremadamente útiles para escribir y validar rápidamente una expresión regular, pero siempre debe realizar más pruebas de la propia expresión incorporando la expresión regular en las pruebas de la solución que se está compilando.
- RegEx101: https://regex101.com/r/22QfRq/2.
Quizás mi editor de expresiones regulares favorito, RegEx ofrece una interfaz de usuario limpia y fácil de usar.
En el lado izquierdo puede especificar el idioma en el que se utilizará la expresión, en el medio puede crear y probar expresiones y en el lado derecho puede consultar un manual de referencia rápida.
- RegExr – https://regexr.com/.
Útil para las expresiones regulares de JavaScript
y PCRE
, regexr
proporciona una interfaz de usuario simple con una guía de referencia en el lado izquierdo, mientras que el lado derecho le permite probar expresiones.
Este editor es algo limitado porque solo puede probar JavaScript
y PCRE
.
- Regextester – https://www.regextester.com/.
De nuevo, otro editor útil, regextester
le permite escribir y guardar expresiones regulares, así como hacer clic en hipervínculos útiles que muestran ejemplos de expresiones regulares comunes.
Al final del día, es probable que elegir un editor de expresiones regulares sea una preferencia. Mi favorito es regex101
y de ninguna manera es una lista exhaustiva de editores, por lo que vale la pena echarle un vistazo.
Del mismo modo, con los probadores de RegEx
, también hay varias guías de referencia disponibles que pueden ayudarlo a construir expresiones RegEx
.
- Microsoft: https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference.
- w3Schools (Python): https://www.w3schools.com/python/python_regex.asp.
- w3Schools (JavaScript): https://www.w3schools.com/jsref/jsref_obj_regexp.asp.
- Hoja de referencia de Python Regex – https://www.debuggex.com/cheatsheet/regex/python.
- Hoja de referencia de JavaScript Regex – https://www.debuggex.com/cheatsheet/regex/javascript.
- Hoja de referencia de PCRE Regex – https://www.debuggex.com/cheatsheet/regex/.
Resumen
- Una expresión regular es una cadena de texto que describe un patrón de caracteres que un motor de expresión regular intenta hacer coincidir
- Las expresiones regulares nos permiten detectar, extraer, reemplazar y hacer coincidir cadenas para extraer información clave del texto.
- Hay una variedad de guías de referencia de expresiones regulares y editores en línea disponibles, que le permiten probar expresiones regulares antes de incorporarlas a sus soluciones.
- Metacaracteres: Personajes con significado especial.
- Secuencias especiales: Una barra invertida
"\"
seguida de un carácter específico. - Secuencias de escape: Se utiliza para hacer coincidir un carácter especial en una expresión regular.
- Clases de personajes: Especifique los caracteres para que coincidan entre corchetes encerrados.
- Indicadores de ocurrencia: Metacaracteres que coinciden con varias instancias de un personaje.
- Colocar anclajes: Coincide con una posición, generalmente antes, después o entre personajes.
Si se ha tomado el tiempo de leer este artículo, gracias por hacerlo. Esperamos que esto le haya servido de algo y que la sección de recursos pueda guiar su aprendizaje posterior.
Gracias por leer este tutorial.
Añadir comentario