Python – Regex Lookbehind

Regex Lookbehind se usa como una afirmación en las expresiones regulares de Python (re) para determinar el éxito o el fracaso si el patrón está detrás, es decir, a la derecha de la posición actual del analizador. No coinciden con nada. Por lo tanto, Regex Lookbehind y lookahead se denominan aserciones de ancho cero.

Sintaxis:

# Positive lookbehind
(?<=<lookbehind_regex>)

# Positive lookahead
(?=<lookahead_regex>)

En esta publicación hablaremos sobre regex lookbehind.

Ejemplo 1:

Python3

# importing regex
import re
  
# Regex Lookbehind example
example = re.search(r'(?<=geeks)\w', 
                    'geeksforgeeks')
  
print(example.group())
print("Pattern found from index", 
      example.start(), example.end())

Producción:

f
Pattern found from index 5 6

La afirmación regex lookbehind (?<=geeks) especifica que lo que precede a cualquier carácter de palabra (‘\w’) debe ser una string ‘geeks’. En este caso, es el carácter ‘f’ antes del cual aparece la string ‘geeks’.

Ejemplo 2:

Python3

# importing regex
import re
  
# Regex Lookbehind example
example = re.search(r'(?<=geeks)\d', 
                    'geeksforgeeks')
print(example)

Producción:

None

En el ejemplo anterior, el resultado es Ninguno porque no hay un dígito decimal precedido por la string ‘geeks’.

La parte de Lookbehind no forma parte de la string de búsqueda. Son importantes cuando no desea que la salida devuelva la parte de búsqueda posterior presente en la string de búsqueda, pero desea usarla para hacer coincidir el patrón que está precedido por una sección en particular. El siguiente ejemplo lo aclarará:

Ejemplo 3:

Python3

import re
  
# Using lookbehind
example1 = re.search(r'(?<=[a-z])\d',
                     "geeks12")
print(example1.group())
  
# Without using lookbehind
example2 = re.search(r'([a-z])\d',
                     "geeks12")
print(example2.group())

Producción:

1
s1

Usando lookbehind, la salida generada es ‘1’, mientras que sin usar lookbehind, la salida generada es ‘s1’. Cualquier carácter de palabra (\w) que precede a cualquier dígito decimal es consumido por expresiones regulares, por lo que no se convierte en parte de la string de búsqueda. 

Mirada negativa hacia atrás

Lookbehind negativo es lo opuesto a lookbehind. Es para asegurar que la string de búsqueda no esté precedida por <lookbehind_regex> .

Sintaxis:

(?<!<lookbehind_regex>) 
Negative Lookbehind

Ejemplo 4:

Python3

import re
  
# Lookbehind
example1 = re.search('(?<=[a-z])geeks', 
                     'geeksforgeeks')
print(example1.group())
  
# Negative Lookbehind
example2 = re.search('(?<![a-z])123', 
                     'geeks123')
  
# Output is None because 123 
# is preceded by a character i.e 's'
print(example2)

Producción:

geeks
None

Publicación traducida automáticamente

Artículo escrito por sailees14032000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *