Lookahead se utiliza como una afirmación en las expresiones regulares de Python para determinar el éxito o el fracaso si el patrón está por delante, es decir, a la derecha de la posición actual del analizador. No coinciden con nada. Por lo tanto, se denominan aserciones de ancho cero.
Sintaxis:
# Positive lookahead (?=<lookahead_regex>)
Ejemplo 1:
Python3
# importing regex import re # lookahead example example = re.search(r'geeks(?=[a-z])', "geeksforgeeks") # display output print("Pattern:", example.group()) print("Pattern found from index:", example.start(), "to", example.end())
Producción:
Pattern: geeks Pattern found from index: 0 to 5
La aserción de anticipación (?=[az]) especifica que lo que sigue a geeks debe ser un carácter alfabético en minúsculas. En este caso, es el carácter f , se encuentra una coincidencia.
Ejemplo 2:
Python3
# importing regex import re # Lookahead example example = re.search(r'geeks(?=[a-z])', "geeks123") # output print(example)
Producción:
None
En el ejemplo anterior, el resultado es Ninguno porque el siguiente carácter después de geeks es 1. No es un carácter alfabético en minúsculas.
La parte de búsqueda anticipada no forma parte de la string de búsqueda. Por lo tanto, se denomina aserción de ancho cero. Son importantes cuando no desea que la salida devuelva la parte de búsqueda anticipada presente en la string de búsqueda, pero desea usarla para hacer coincidir el patrón seguido por una sección en particular. El siguiente ejemplo lo aclarará.
Ejemplo 3:
Python3
# import required module import re # using lookahead example1 = re.search(r'geeks(?=[a-z])', "geeksforgeeks") print('Using lookahead:', example1.group()) # without using lookahead example2 = re.search(r'geeks([a-z])', "geeksforgeeks") print('Without using lookahead:', example2.group())
Producción:
Using lookahead: geeks Without using lookahead: geeksf
Al usar la búsqueda anticipada, la salida generada es ‘geeks’, mientras que sin usar la búsqueda anticipada, la salida generada es geeksf . La f es consumida por expresiones regulares y se convierte en parte de la string de búsqueda.
La anticipación negativa es lo opuesto a la anticipación. Es para asegurar que la string de búsqueda no sea seguida por <lookahead_regex>.
Sintaxis:
# Negative Lookahead (?!<lookahead_regex>)
Ejemplo 4:
Python3
# import required module import re # positive lookahead example1 = re.search('geeks(?=[a-z])', 'geeksforgeeks') print('Positive Lookahead:', example1.group()) # negative lookahead example2 = re.search('geeks(?![a-z])', 'geeks123') print('Negative Lookahead:', example2.group())
Producción:
Positive Lookahead: geeks Negative Lookahead: geeks
En el ejemplo anterior, el resultado es geeks porque la string de búsqueda geeks aquí no va seguida de letras minúsculas.
Publicación traducida automáticamente
Artículo escrito por sailees14032000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA