validar regulares python3 programación practicar para online más expresiones ejercicios python regex python-3.x variables escaping

python3 - python string expresiones regulares



¿Cómo usar una variable dentro de una expresión regular? (6)

Estoy de acuerdo con todo lo anterior a menos que:

sys.argv[1] era algo así como Chicken/d{2}-/d{2}An/s*important/s*anchor

sys.argv[1] = "Chicken/d{2}-/d{2}An/s*important/s*anchor"

no querrá usar re.escape , porque en ese caso le gustaría que se comporte como una expresión regular

TEXTO = sys.argv[1] if re.search(r"/b(?<=/w)" + TEXTO + "/b(?!/w)", subject, re.IGNORECASE): # Successful match else: # Match attempt failed

Me gustaría utilizar una variable dentro de una regex , ¿cómo puedo hacer esto en Python ?

TEXTO = sys.argv[1] if re.search(r"/b(?=/w)TEXTO/b(?!/w)", subject, re.IGNORECASE): # Successful match else: # Match attempt failed


Me parece muy conveniente construir un patrón de expresión regular al unir múltiples patrones más pequeños.

import re string = "begin:id1:tag:middl:id2:tag:id3:end" re_str1 = r''(?<=(/S{5})):'' re_str2 = r''(id/d+):(?=tag:)'' re_pattern = re.compile(re_str1 + re_str2) match = re_pattern.findall(string) print(match)

Salida:

[(''begin'', ''id1''), (''middl'', ''id2'')]


Necesitaba buscar nombres de usuario que fueran similares entre sí, y lo que Ned Batchelder dijo fue increíblemente útil. Sin embargo, descubrí que tenía un resultado más limpio cuando usaba re.compile para crear mi término de búsqueda:

pattern = re.compile(r"("+username+".*):(.*?):(.*?):(.*?):(.*)" matches = re.findall(pattern, lines)

La salida se puede imprimir usando lo siguiente:

print(matches[1]) # prints one whole matching line (in this case, the first line) print(matches[1][3]) # prints the fourth character group (established with the parentheses in the regex statement) of the first line.


Tienes que construir la expresión regular como una cadena:

TEXTO = sys.argv[1] my_regex = r"/b(?=/w)" + re.escape(TEXTO) + r"/b(?!/w)" if re.search(my_regex, subject, re.IGNORECASE): etc.

Tenga en cuenta el uso de re.escape para que si su texto tiene caracteres especiales, no se interpreten como tales.


if re.search(r"/b(?<=/w)%s/b(?!/w)" % TEXTO, subject, re.IGNORECASE):

Esto insertará lo que está en TEXTO en la expresión regular como una cadena.


rx = r''/b(?<=/w){0}/b(?!/w)''.format(TEXTO)