Referências anteriores do Python Regex

Resumo : neste tutorial, você aprenderá sobre referências anteriores de regex do Python e como aplicá-las de maneira eficaz.

Introdução às referências anteriores de regex do Python

Referências anteriores como variáveis ​​em Python. As referências anteriores permitem fazer referência a grupos de captura em uma expressão regular .

O seguinte mostra a sintaxe de uma referência anterior:

\NLinguagem de código:  Python  ( python )

Alternativamente, você pode usar a seguinte sintaxe:

\g<N>Linguagem de código:  Python  ( python )

Nesta sintaxe, Npode ser 1, 2, 3, etc. que representa o grupo de captura correspondente.

Observe que se \g<0>refere à correspondência inteira, que tem o mesmo valor que match.group(0).

Suponha que você tenha uma string com a palavra duplicada Pythoncomo esta:

s = 'Python Python is awesome'Linguagem de código:  Python  ( python )

E você deseja remover a palavra duplicada ( Python) para que a string resultante seja:

Python is awesomeLinguagem de código:  Python  ( python )

Para fazer isso, você pode usar uma expressão regular com referência anterior.

Primeiro, combine uma palavra com um ou mais caracteres e um ou mais espaços:

'\w+\s+'Linguagem de código:  Python  ( python )

Segundo, crie um grupo de captura que contenha apenas os caracteres da palavra:

'(\w+)\s+'Linguagem de código:  Python  ( python )

Terceiro, crie uma referência anterior que faça referência ao primeiro grupo de captura:

'(\w+)\s+\1'Linguagem de código:  Python  ( python )

Nesse padrão, \1é uma referência anterior que faz referência ao \w+grupo de captura ( ).

Por fim, substitua toda a correspondência pelo primeiro grupo de captura usando a sub()função do remódulo:

import re

s = 'Python Python is awesome'

new_s = re.sub(r'(\w+)\s+\1', r'\1', s)

print(new_s)Linguagem de código:  Python  ( python )

Saída:

Python is awesomeLinguagem de código:  Python  ( python )

Mais exemplos de referência anterior de regex Python

Vejamos mais alguns exemplos de uso de referências anteriores.

1) Usando referências anteriores de regex Python para obter texto entre aspas

Suponha que você queira colocar o texto entre aspas duplas:

"This is regex backreference example"Linguagem de código:  Python  ( python )

Ou aspas simples:

'This is regex backreference example'Linguagem de código:  Python  ( python )

Mas não misturado entre aspas simples e duplas. O seguinte não corresponderá:

'not match"Linguagem de código:  Python  ( python )

Para fazer isso, você pode usar o seguinte padrão:

'[\'"](.*?)[\'"]'Linguagem de código:  Python  ( python )

No entanto, esse padrão corresponderá ao texto que começa com aspas simples (‘) e termina com aspas duplas (“) ou vice-versa. Por exemplo:

import re

s = '"Python\'s awsome". She said'
pattern = '[\'"].*?[\'"]'

match = re.search(pattern, s)

print(match.group(0))Linguagem de código:  Python  ( python )

Ele retorna o "Python'não "Python's awesome":

"Python'Linguagem de código:  Python  ( python )

Para corrigir isso, você pode usar uma referência anterior:

r'([\'"]).*?\1'Linguagem de código:  Python  ( python )

A referência anterior \1refere-se ao primeiro grupo de captura. Portanto, se o subgrupo começar com aspas simples, \1corresponderá à aspas simples. E se o subgrupo começar com aspas duplas, \1corresponderá às aspas duplas.

Por exemplo:

import re

s = '"Python\'s awsome". She said'
pattern = r'([\'"])(.*?)\1'

match = re.search(pattern, s)
print(match.group())Linguagem de código:  Python  ( python )

Saída:

"Python's awsome"Linguagem de código:  Python  ( python )

2) Usando referências anteriores de regex Python para encontrar palavras que tenham pelo menos um caractere repetido consecutivo

O exemplo a seguir usa uma referência anterior para encontrar palavras que tenham pelo menos um caractere repetido consecutivamente:

import re

words = ['apple', 'orange', 'strawberry']
pattern = r'\b\w*(\w)\1\w*\b'

results = [w for w in words if re.search(pattern, w)]

print(results)Linguagem de código:  Python  ( python )

Saída:

['apple', 'strawberry']Linguagem de código:  Python  ( python )

Resumo

  • Use uma referência anterior \Npara fazer referência ao grupo de captura Nem uma expressão regular.

Deixe um comentário

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