¿Expresión regular insensible a mayúsculas sin re.compile?

En Python, puedo comstackr una expresión regular para que no re.compile mayúsculas de minúsculas usando re.compile :

 >>> s = 'TeSt' >>> casesensitive = re.compile('test') >>> ignorecase = re.compile('test', re.IGNORECASE) >>> >>> print casesensitive.match(s) None >>> print ignorecase.match(s)  

¿Hay alguna manera de hacer lo mismo, pero sin usar re.compile ? No puedo encontrar nada como el sufijo i de Perl (por ejemplo, m/test/i ) en la documentación.

Pase re.IGNORECASE a los re.IGNORECASE de search , match o sub :

 re.search('test', 'TeSt', re.IGNORECASE) re.match('test', 'TeSt', re.IGNORECASE) re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE) 

También puede realizar búsquedas que no distinguen entre mayúsculas y minúsculas mediante la búsqueda / coincidencia sin el indicador IGNORECASE (probado en Python 2.7.3):

 re.search(r'(?i)test', 'TeSt').group() ## returns 'TeSt' re.match(r'(?i)test', 'TeSt').group() ## returns 'TeSt' 

El marcador que no distingue entre mayúsculas y minúsculas, (?i) se puede incorporar directamente en el patrón de expresiones regulares:

 >>> import re >>> s = 'This is one Test, another TEST, and another test.' >>> re.findall('(?i)test', s) ['Test', 'TEST', 'test'] 

También puede definir mayúsculas y minúsculas durante la comstackción del patrón:

 pattern = re.compile('FIle:/+(.*)', re.IGNORECASE) 
 #'re.IGNORECASE' for case insensitive results short form re.I #'re.match' returns the first match located from the start of the string. #'re.search' returns location of the where the match is found #'re.compile' creates a regex object that can be used for multiple matches >>> s = r'TeSt' >>> print (re.match(s, r'test123', re.I)) <_sre.SRE_Match object; span=(0, 4), match='test'> # OR >>> pattern = re.compile(s, re.I) >>> print(pattern.match(r'test123')) <_sre.SRE_Match object; span=(0, 4), match='test'> 

En importaciones

 import re 

En tiempo de ejecución de procesamiento:

 RE_TEST = r'test' if re.match(RE_TEST, 'TeSt', re.IGNORECASE): 

Cabe mencionar que no usar re.compile es un desperdicio. Cada vez que se llame al método de coincidencia anterior, se comstackrá la expresión regular. Esto también es una práctica defectuosa en otros lenguajes de progtwigción. La siguiente es la mejor práctica.

En la inicialización de la aplicación:

 self.RE_TEST = re.compile('test', re.IGNORECASE) 

En tiempo de ejecución de procesamiento:

 if self.RE_TEST.match('TeSt'):