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 or
operador em Python.
A expressão regular a seguir usa uma alternância para corresponder à string literal complex
e 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 simple
ou 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:mm
formato, 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 01
até 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\d
corresponde a um único dígito de 0 a 9[01]\d
partidas 00, 01 a 192
corresponde ao dígito 2[0-3]
corresponde a um único dígito de 0 a 3, incluindo 0, 1, 2, 32[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 00
até 59
, você pode usar o seguinte padrão para fazer a correspondência:
[0-5]\d
Linguagem de código: Python ( python )
A expressão regular a seguir combina as duas regras acima para corresponder à hora no hh:mm
formato:
'[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:30
Linguagem de código: Python ( python )
Neste exemplo, o mecanismo regex trata o padrão [01]\d|2[0-3]:[0-5]\d
como 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]\d
Linguagem 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:30
Linguagem de código: Python ( python )
Resumo
- A alternância de regex
X | Y
corresponde aX
ouY
. - 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.