Conjuntos de caracteres em expressões regulares Python
Os grupos de caracteres \d e \w não são
muito flexíveis. Mesmo uma tarefa simples,
como encontrar todas as letras, mas não os dígitos -
não pode ser resolvida por eles. Para tais tarefas,
devemos usar colchetes,
que representam a operação 'ou'.
Os colchetes substituem um
caractere, qualquer um dos listados dentro. Por
exemplo, assim: x[abc]x -
estamos dizendo que nas extremidades devem haver letras
x, e dentro - um caractere: ou 'a',
ou 'b', ou 'c'.
Após os colchetes, podemos escrever
operadores de repetição. Por exemplo, assim:
x[abc]+x - estamos dizendo que dentro
dos x pode haver qualquer quantidade de caracteres
'a', 'b' e 'c' -
em quaisquer combinações.
Podemos não apenas listar caracteres, mas
também criar grupos de caracteres, escrevendo um
hífen entre dois caracteres. Por exemplo, assim:
[a-d] - obtemos todos os caracteres de
'a' a 'd'.
Vamos ver exemplos.
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'a' a 'z':
Resultado da execução do código:
'! ! ! x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'a' a 'k':
txt = 'xax xbx xmx x@x'
res = re.sub('x[a-k]x', '!', txt)
print(res)
Resultado da execução do código:
'! ! xmx x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'A' a 'Z':
txt = 'xax xBx xcx x@x'
res = re.sub('x[A-Z]x', '!', txt)
print(res)
Resultado da execução do código:
'xax ! xcx x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer dígito de 0
a 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[0-9]x', '!', txt)
print(res)
Resultado da execução do código:
'xax ! ! ! x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer dígito de 3
a 7:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[3-7]x', '!', txt)
print(res)
Resultado da execução do código:
'xax x1x ! ! x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'a' a 'z' ou dígito de
1 a 9:
txt = 'xax x1x x3x x5x x@x'
res = re.sub('x[a-z1-9]x', '!', txt)
print(res)
Resultado da execução do código:
'! ! ! ! x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'a' a 'z' ou letra de
'A' a 'Z':
txt = 'xax xBx xcx x5x x@x'
res = re.sub('x[a-zA-Z]x', '!', txt)
print(res)
Resultado da execução do código:
'! ! ! x5x x@x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x qualquer letra de
'a' a 'z' ou os dígitos 1,
2:
txt = 'xax xbx x1x x2x x3x'
res = re.sub('x[a-z12]x', '!', txt)
print(res)
Resultado da execução do código:
'! ! ! ! x3x'
Exemplo
Neste exemplo, o padrão de pesquisa é
o seguinte: entre x letras de 'a'
a 'z' em quantidade de 1 ou
mais:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]+x', '!', txt)
print(res)
Resultado da execução do código:
'xx ! ! ! x123x xa3x'
Exemplo
Vamos fazer com que a quantidade de letras possa ser zero:
txt = 'xx xabesx xaadx x123x xa3x'
res = re.sub('x[a-z]*x', '!', txt)
print(res)
Como resultado, obteremos:
'! ! ! ! x123x xa3x'
Exemplo
Dentro dos colchetes também podemos especificar caracteres escapados. Vamos encontrar uma sequência de letras e dígitos, repetida zero ou mais vezes:
txt = 'xx x@x xadx xas12x xa3x'
res = re.sub('x[a-z\d]*x', '!', txt)
print(res)
Resultado da execução do código:
'! x@x ! ! !'
Exemplo
Se precisarmos especificar outros colchetes, também os escapamos obrigatoriamente:
txt = 'xx xrx xas[]x x3x'
res = re.sub('x[a-z\[\]]*x', '!', txt)
print(res)
Resultado da execução do código:
'! ! ! x3x'
Problemas práticos
Dada a string:
txt = 'aba aea aca aza axa'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - a letra 'b',
'e' ou 'x'.
Dada a string:
txt = 'a1a a3a a7a a9a aba'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - um dígito de
3 a 6.
Dada a string:
txt = 'aba aea afa aha aga'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - uma letra de
'a' a 'g'.
Dada a string:
txt = 'aba aea afa aha aga'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - uma letra de
'a' a 'f' e de 'j'
a 'z'.
Dada a string:
txt = 'aAa aea aEa aJa a3a'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - uma letra de
'a' a 'f' e de 'A'
a 'D'.
Dada a string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - letras latinas
minúsculas, sem afetar as demais.
Dada a string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - letras latinas
minúsculas e maiúsculas, sem afetar as
demais.
Dada a string:
txt = 'aAXa aeffa aGha aza ax23a a3sSa'
Escreva uma expressão regular que encontre pelo
seguinte padrão: nas extremidades há letras
'a', e entre elas - letras latinas
minúsculas e dígitos, sem afetar as
demais.