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.
Comentarios