Introdução a Expressões Regulares em Python
Expressões regulares são comandos para busca e substituição complexas (ou apenas busca). Elas permitem fazer coisas muito interessantes, mas, infelizmente, são bastante difíceis de aprender.
Para começar a trabalhar com expressões regulares
em Python, precisamos importar um módulo especial
re:
import re
O módulo re inclui métodos
destinados ao trabalho com expressões
regulares. Uma expressão regular
é um conjunto de comandos e consiste
em dois tipos de caracteres: aqueles que
representam a si mesmos e os caracteres de comando,
que são chamados de caracteres especiais.
É melhor começar a familiarizar-se com expressões regulares
usando o exemplo do método sub, que
é usado para substituições em uma string. O primeiro
parâmetro do método é o que substituir,
o segundo - pelo que substituir. No terceiro parâmetro
especificamos a string na qual a substituição deve ser feita.
No quarto parâmetro opcional
definimos o número de substituições. A substituição mais simples
usando este método será
assim:
res = re.sub('a', '!', 'bab')
print(res) # exibirá 'b!b'
Como você notou, na expressão regular
as letras representam a si mesmas. O mesmo
se aplica aos dígitos. Vamos substituir o dígito
2 por !:
res = re.sub('2', '!', '12abc3')
print(res) # exibirá '1!abc3'
Já o ponto é um caractere especial
e representa qualquer caractere. No próximo
exemplo, vamos encontrar uma substring com o seguinte
padrão: letra 'x', depois qualquer
caractere, depois novamente a letra 'x':
res = re.sub('x.x', '!', 'xax eee')
print(res) # exibirá '! eee'
Dada a string:
txt = 'ahb acb aeb aeeb adcb axeb'
Escreva uma expressão regular que encontrará as strings
'ahb', 'acb', 'aeb'
seguindo o padrão: letra 'a', qualquer
caractere, letra 'b'.
Dada a string:
txt = 'aba aca aea abba adca abea'
Escreva uma expressão regular que encontrará as strings
'abba', 'adca', 'abea'
seguindo o padrão: letra 'a', 2
caracteres quaisquer, letra 'a'.
Dada a string:
txt = 'aba aca aea abba adca abea'
Escreva uma expressão regular que encontrará as strings
'abba' e 'abea', sem capturar
'adca'.