Python ofrece algunas banderas para modificar el comportamiento de los motores de expresiones regulares. Vamos a discutirlos a continuación:
- Insensibilidad a mayúsculas y minúsculas
- Nueva línea de coincidencia de puntos
- Modo multilínea
- Modo detallado
- Modo de depuración
Insensibilidad a mayúsculas y minúsculas
El re.IGNORECASE permite que la expresión regular se vuelva insensible a mayúsculas y minúsculas. Aquí, la coincidencia se devuelve según el caso de la string proporcionada, no la string en la expresión regular.
Python3
import re match = re.search(r'geeksforgeeks', 'GeeksforGeeks',re.IGNORECASE) print(match)
<_sre.SRE_Match object; span=(0, 13), match='GeeksforGeeks'>
Nueva línea de coincidencia de puntos
Al usar el indicador re.DOTALL, puede modificar el comportamiento del carácter de punto (.) para que coincida con el carácter de nueva línea aparte de otros caracteres. Antes de usar el indicador DOTALL, veamos cómo responde el motor normal al carácter de nueva línea.
Python3
import re match = re.search(r'.+', 'Hello,\nGeeks') print(match)
<_sre.SRE_Match object; span=(0, 6), match='Hello,'>
Aquí, la expresión regular coincide con uno o más caracteres (‘. +’). En el momento en que el motor llega al carácter de nueva línea, se detiene porque el carácter de punto no coincide con los saltos de línea. Veamos el código que hace uso de la bandera DOTALL.
Python3
import re match = re.search(r'.+','Hello,\nGeeks', re.DOTALL) print(match)
Producción:
<_sre.SRE_Match objeto; span=(0, 12), match=’Hola,\nGeeks’>
Modo multilínea
Con la bandera Multilínea, puede hacer coincidir el principio y el final de cualquier línea dentro de la string. Si observamos el carácter ^, solo coincidirá con el comienzo de una string. Entonces, incluso si hay un carácter coincidente después del carácter de nueva línea, no devuelve ninguno. Veamos el siguiente código.
Python3
import re match = re.search(r'^Geeks', 'Hello,\nGeeks') print(match)
None
Usando la bandera Multiline, puede superar el problema anterior. Puede coincidir con el principio y el final de cualquier línea de la string. Hagamos coincidir con el comienzo de una string.
Python3
import re match = re.search(r'^Geeks', 'Hello,\nGeeks', re.MULTILINE) print(match)
<_sre.SRE_Match object; span=(7, 12), match='Geeks'>
Modo detallado
Permite representar una expresión regular de una forma más legible. Veamos el siguiente código.
Python3
import re match = re.search(r"""(?P<first_two>[\d]{2}) # The first two digits - # A literal python (?P<last_three>[\d]{3}) # The last three digit """, '25-542', re.VERBOSE) print(match)
<_sre.SRE_Match object; span=(0, 6), match='25-542'>
La marca Verbose trata el carácter # como un carácter de comentario y también ignora todos los espacios en blanco, incluido el salto de línea.
Modo de depuración
El indicador re.DEBUG proporciona información de depuración al compilar una expresión regular. Echemos un vistazo al siguiente código.
Python3
import re match = re.search(r'(?P<first_two>[\d]{2})-(?P<last_three>[\d]{3})',\ '25-542', re.DEBUG) print(match)
SUBPATTERN 1 0 0 MAX_REPEAT 2 2 IN CATEGORY CATEGORY_DIGIT LITERAL 45 SUBPATTERN 2 0 0 MAX_REPEAT 3 3 IN CATEGORY CATEGORY_DIGIT <_sre.SRE_Match object; span=(0, 6), match='25-542'>
Aquí, ha visto diferentes tipos de banderas que pueden cambiar ligeramente el comportamiento de un motor de expresiones regulares. También puede usar varias banderas al mismo tiempo usando un operador OR (|) bit a bit.
Publicación traducida automáticamente
Artículo escrito por SonuGeorge y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA