Detallado en Python Regex

En este artículo, aprenderemos sobre el indicador VERBOSE del paquete re y cómo usarlo.

re.VERBOSE: Esta bandera le permite escribir expresiones regulares que se ven mejor y son más legibles al permitirle separar visualmente las secciones lógicas del patrón y agregar comentarios.
Los espacios en blanco dentro del patrón se ignoran, excepto cuando están en una clase de caracteres, o cuando van precedidos por una barra invertida sin escape, o dentro de tokens como *?, (?: or (?P. Cuando una línea contiene un # que no está en una clase de carácter y no está precedido por una barra invertida sin escape, se ignoran todos los caracteres desde el extremo izquierdo como # hasta el final de la línea.

# Without Using VERBOSE
regex_email = re.compile(r'^([a-z0-9_\.-]+)@([0-9a-z\.-]+)\.([a-z\.]{2, 6})$',
              re.IGNORECASE)
   
# Using VERBOSE
regex_email = re.compile(r"""
            ^([a-z0-9_\.-]+)              # local Part
            @                             # single @ sign
            ([0-9a-z\.-]+)                # Domain name
            \.                            # single Dot .
            ([a-z]{2,6})$                 # Top level Domain  
             """,re.VERBOSE | re.IGNORECASE)   

Se pasa como argumento a re.compile()ie re.compile(Regular Expression, re.VERBOSE) . re.compile()devuelve un RegexObject que luego se compara con la string dada.

Consideremos un ejemplo en el que se le pide al usuario que ingrese su ID de correo electrónico y tenemos que validarlo usando RegEx. El formato de un correo electrónico es el siguiente:

  • Datos personales/parte local como john123
  • Único @
  • Nombre de dominio como gmail/yahoo, etc.
  • Punto único (.)
  • Dominio de nivel superior como .com/.org/.net

Ejemplos:

Input : expectopatronum@gmail.com
Output : Valid


Input : avadakedavra@yahoo.com@
Output : Invalid
This is invalid because there is @ after the top level domain name.

A continuación se muestra la implementación de Python:

# Python3 program to show the Implementation of VERBOSE in RegEX
import re
  
def validate_email(email):
  
    # RegexObject = re.compile( Regular expression, flag )
    # Compiles a regular expression pattern into 
    # a regular expression object
    regex_email=re.compile(r"""
                           ^([a-z0-9_\.-]+)                 # local Part
                           @                             # single @ sign
                            ([0-9a-z\.-]+)                 # Domain name
                           \.                             # single Dot .
                            ([a-z]{2,6})$                 # Top level Domain     
                           """,re.VERBOSE | re.IGNORECASE)
  
    # RegexObject is matched with the desired
    # string using fullmatch function
    # In case a match is found, search()
    # returns a MatchObject Instance
    res=regex_email.fullmatch(email)
  
    #If match is found, the string is valid
    if res:
        print("{} is Valid. Details are as follow:".format(email))
          
        #prints first part/personal detail of Email Id
        print("Local:{}".format(res.group(1)))
          
        #prints Domain Name of Email Id
        print("Domain:{}".format(res.group(2)))
          
        #prints Top Level Domain Name of Email Id
        print("Top Level domain:{}".format(res.group(3)))
        print()
          
    else:
        #If match is not found,string is invalid
        print("{} is Invalid".format(email))
  
# Driver Code
validate_email("expectopatronum@gmail.com")
validate_email("avadakedavra@yahoo.com@")
validate_email("Crucio@.com")

Producción:

expectopatronum@gmail.com is Valid. Details are as follow:
Local:expectopatronum
Domain:gmail
Top Level domain:com

avadakedavra@yahoo.com@ is Invalid
Crucio@.com is Invalid

Publicación traducida automáticamente

Artículo escrito por PoojaRani24 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 *