Operadores de repetición de caracteres en expresiones regulares
Hay situaciones en las que es necesario indicar que
un carácter se repite un número determinado de
veces. Si el número exacto de repeticiones se desconoce,
se puede simplemente escribirlo varias veces
- 'aaaa'. Pero, ¿qué hacer si se necesita
decir algo como: repetir una o más
veces?
Para ello existen operadores (cuantificadores)
de repetición: el signo más + (una o más
veces), el asterisco * (cero o más
veces) y el signo de interrogación ? (cero o una vez).
Estos operadores actúan sobre el carácter
que les precede.
Veamos el funcionamiento de estos operadores con ejemplos.
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' una o más
veces, letra 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa+x', '!', txt)
print(res)
Resultado de la ejecución del código:
'xx ! ! ! xbx'
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' cero o más
veces, letra 'x':
txt = 'xx xax xaax xaaax xbx'
res = re.sub('xa*x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! ! xbx'
Ejemplo
Encontremos todas las subcadenas según el patrón letra
'x', letra 'a' cero o una
vez, letra 'x':
txt = 'xx xax xaax xbx'
res = re.sub('xa?x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! xaax xbx'
Problemas prácticos
Dada la cadena:
txt = 'aa aba abba abbba abca abea'
Escriba una expresión regular que encuentre las cadenas
'aba', 'abba', 'abbba'
según el patrón: letra 'a', letra
'b' cualquier número de veces, letra
'a'.
Dada la cadena:
txt = 'aa aba abba abbba abca abea'
Escriba una expresión regular que encuentre las cadenas
'aa', 'aba', 'abba',
'abbba' según el patrón: letra
'a', letra 'b' cualquier número de veces
(incluyendo cero veces), letra
'a'.
Dada la cadena:
txt = 'aa aba abba abbba abca abea'
Escriba una expresión regular que encuentre las cadenas
'aa', 'aba' según el patrón:
letra 'a', letra 'b' una
vez o ninguna, letra 'a'.
Dada la cadena:
txt = 'aa aba abba abbba abca abea'
Escriba una expresión regular que encuentre las cadenas
'aa', 'aba', 'abba',
'abbba', sin capturar 'abca'
y 'abea'.