Conjuntos de caracteres en expresiones regulares de Python
Los grupos de caracteres \d y \w no
son muy flexibles. Incluso una tarea tan simple
como encontrar todas las letras, pero no los números -
no puede ser resuelta por ellos. Para tales tareas
se deben usar corchetes,
que representan la operación 'o'.
Los corchetes reemplazan un
carácter, cualquiera de los listados dentro. Por
ejemplo, así: x[abc]x -
decimos que en los extremos deben haber letras
'x', y dentro - un carácter: o 'a',
o 'b', o 'c'.
Después de los corchetes se pueden escribir
operadores de repetición. Por ejemplo, así:
x[abc]+x - decimos que dentro
de las 'x' puede haber cualquier cantidad de caracteres
'a', 'b' y 'c' - en
cualquier combinación.
No solo se pueden enumerar caracteres, sino
crear grupos de caracteres, escribiendo entre
dos caracteres un guion. Por ejemplo, así:
[a-d] - obtenemos todos los caracteres desde
'a' hasta 'd'.
Veamos algunos ejemplos.
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'a' hasta 'z':
Resultado de la ejecución del código:
'! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'a' hasta 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! xmx x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'A' hasta 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'xax ! xcx x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier dígito desde 0
hasta 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'xax ! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier dígito desde 3
hasta 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'xax x1x ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'a' hasta 'z' o dígito desde
1 hasta 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! ! x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'a' hasta 'z' o letra desde
'A' hasta 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! x5x x@x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' cualquier letra desde
'a' hasta 'z' o los dígitos 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! ! x3x'
Ejemplo
En este ejemplo, el patrón de búsqueda es
así: entre 'x' letras desde 'a'
hasta 'z' en cantidad desde 1 o
más:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Resultado de la ejecución del código:
'xx ! ! ! x123x xa3x'
Ejemplo
Hagamos que la cantidad de letras pueda ser cero:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Como resultado obtendremos:
'! ! ! ! x123x xa3x'
Ejemplo
Dentro de los corchetes también se pueden indicar caracteres escapados. Encontremos una secuencia de letras y dígitos, repitiéndose cero o más veces:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! x@x ! ! !'
Ejemplo
Si necesitamos indicar otros corchetes, también debemos escaparlos:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Resultado de la ejecución del código:
'! ! ! x3x'
Problemas prácticos
Dada la cadena:
txt = 'aba aea aca aza axa'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - la letra 'b',
'e' o 'x'.
Dada la cadena:
txt = 'a1a a3a a7a a9a aba'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - un dígito desde
3 hasta 6.
Dada la cadena:
txt = 'aba aea afa aha aga'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - una letra desde
'a' hasta 'g'.
Dada la cadena:
txt = 'aba aea afa aha aga'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - una letra desde
'a' hasta 'f' y desde 'j'
hasta 'z'.
Dada la cadena:
txt = 'aAa aea aEa aJa a3a'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - una letra desde
'a' hasta 'f' y desde 'A'
hasta 'D'.
Dada la cadena:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - letras latinas
minúsculas, sin afectar a las demás.
Dada la cadena:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - letras latinas
minúsculas y mayúsculas, sin afectar a las
demás.
Dada la cadena:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escriba una expresión regular que encuentre según
el siguiente patrón: en los extremos hay letras
'a', y entre ellas - letras latinas
minúsculas y dígitos, sin afectar a las
demás.