En las expresiones regulares existen estos metacaracteres: . ^ $ * + ? { } [ ] \ | ( )

Todos estos metacaracteres tienen un significado especial que debemos conocer. Es importante destacar que no hay que aprenderlos a la fuerza y una chuleta puede ayudar.

  • . Cualquier carácter (excepto el carácter de nueva línea)
  • ^ Comienza con «^hola»
  • $ Termina con «^mundo»
  • * Cero o más ocurrencias «cyb*»
  • + Una o más ocurrencias «cyb+»
  • { } Exactamente el número especificado de ocurrencias «al{2}»
  • [ ] Un conjunto de caracteres «[a-m]»
  • \ Secuencia especial (o escape de caracteres especiales) «\d»
  • | Cualquiera de los dos «hola|adios»
  • ( ) Captura y agrupación

La secuencia especial es útil por ejemplo, si queremos buscar el símbolo de punto. En este caso, tenemos que escapar el punto así: \.

import re

cadenaPrueba = "123abc456789abc123ABC"

patron = re.compile(r".")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia.group())

Resultado:

1
2
3
a
b
c
4
5
6
7
8
9
a
b
c
1
2
3
A
B

Obtenemos todos los caracteres de nuestra cadena porque el punto busca cualquier carácter excepto la nueva línea.

Digamos que tenemos un punto al final de nuestra cadena y queremos obtener esto. Tenemos que escapar con una barra invertida.

import re

cadenaPrueba = "123abc456789abc123ABC."

patron = re.compile(r"\.")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia)

Resultado:

<re.Match object; span=(21, 22), match='.'>

Veamos si la cadena empieza por «123».

import re

cadenaPrueba = "123abc456789abc123ABC"

patron = re.compile(r"^123")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia)

Resultado:

<re.Match object; span=(0, 3), match='123'>

Ahora, veamos si la cadena empieza por «abc».

import re

cadenaPrueba = "123abc456789abc123ABC"

patron = re.compile(r"^abc")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia)

No devolverá nada porque no está al principio.

Y al contrario, si queremos mirar si un patrón se encuentra al final…

import re

cadenaPrueba = "123abc456789abc123ABC"

patron = re.compile(r"abc$")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia)

Esto no encontrará nada porque distingue entre mayúsculas y minúsculas.
Por otro lado, si sustituimos «abc» por «ABC».

import re

cadenaPrueba = "123abc456789abc123ABC"

patron = re.compile(r"ABC$")
coincidencias = patron.finditer(cadenaPrueba)

for coincidencia in coincidencias:
    print(coincidencia)

Se encuentra la coincidencia al final.

Última modificación: 10 de febrero de 2022

Autor

Comentarios

Escribe una respuesta o comentario

Tu dirección de correo electrónico no será publicada.