Alternação Python Regex

Resumo : neste tutorial, você aprenderá sobre a alternância de regex do Python, que se comporta como o operador “OR” em expressões regulares.

Introdução à alternância de regex do Python

Para representar uma alternância em expressões regulares , você usa o operador pipe ( |). O operador de pipe é chamado de alternância . É como o oroperador em Python.

A expressão regular a seguir usa uma alternância para corresponder à string literal complexe simple:

'simple|complex'Linguagem de código:  Python  ( python )

Por exemplo, o programa a seguir usa a expressão regular acima para corresponder à string literal simpleou complex:

import re

s = 'simple is better than complex'
pattern = r'simple|complex'

matches = re.findall(pattern,s)
print(matches)Linguagem de código:  Python  ( python )

Saída:

['simple', 'complex']Linguagem de código:  Python  ( python )

Exemplos de alternância de regex Python

Vejamos mais exemplos de uso da alternância regex.

1) Use alternância de regex Python para combinar o tempo no formato hh:mm

Para corresponder a uma sequência de tempo no hh:mmformato, você pode combinar o \d conjunto de caracteres com os quantificadores {} :

'\d{2}:\d{2}'Linguagem de código:  Python  ( python )

Neste padrão:

  • \d{2}corresponde a dois dígitos.
  • :corresponde ao caractere de dois pontos.
  • \d{2}corresponde a dois dígitos.

No entanto, a regra \d{2}também corresponde a um número que não é uma hora ou minuto válido, como 99.

Para corrigir isso, você pode usar a alternância regex.

Se a hora válida variar de 01até 23, você poderá usar o seguinte padrão para corresponder à parte da hora:

[01]\d|2[0-3]Linguagem de código:  Python  ( python )

Neste padrão:

  • [01]corresponde a um único dígito 0 ou 1
  • \dcorresponde a um único dígito de 0 a 9
  • [01]\dpartidas 00, 01 a 19
  • 2corresponde ao dígito 2
  • [0-3]corresponde a um único dígito de 0 a 3, incluindo 0, 1, 2, 3
  • 2[0-3]corresponde a dois dígitos 20, 21, 22 e 23.

Portanto, [01]\d|2[0-3]corresponde a dois dígitos de 00 a 23

Como o minuto válido varia de 00até 59, você pode usar o seguinte padrão para fazer a correspondência:

[0-5]\dLinguagem de código:  Python  ( python )

A expressão regular a seguir combina as duas regras acima para corresponder à hora no hh:mmformato:

'[01]\d|2[0-3]:[0-5]\d'Linguagem de código:  Python  ( python )

No entanto, esta expressão regular não funcionará conforme o esperado. Por exemplo:

import re

s = '09:30 30:61 22:30 25:99'
pattern = r'[01]\d|2[0-3]:[0-5]\d'

matches = re.finditer(pattern, s)
for match in matches:
    print(match.group())Linguagem de código:  Python  ( python )

Saída:

09
22:30Linguagem de código:  Python  ( python )

Neste exemplo, o mecanismo regex trata o padrão [01]\d|2[0-3]:[0-5]\dcomo duas partes principais separadas pela alternância:

[01]\d
OR
2[0-3]):([0-5]\d)Linguagem de código:  Python  ( python )

Para corrigir isso, você precisa colocar a alternância entre parênteses para indicar que apenas aquela parte é alternada, e não a expressão inteira como esta:

([01]\d|2[0-3]):[0-5]\dLinguagem de código:  Python  ( python )

Agora, o programa funciona conforme o esperado:

import re

s = '09:30 30:61 22:30 25:99'
pattern = r'([01]\d|2[0-3]):[0-5]\d'

matches = re.finditer(pattern, s)
for match in matches:
    print(match.group())Linguagem de código:  Python  ( python )

Saída:

09:30
22:30Linguagem de código:  Python  ( python )

Resumo

  • A alternância de regex X | Ycorresponde a Xou Y.
  • A alternância regex é como um operador OR em expressões regulares.
  • Coloque a parte de alternância entre parênteses ()para expressar que apenas essa parte é alternada.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *