La expresión regular de Python no coincide con el inicio de línea

Tengo un archivo de texto con algunos datos:

... DATA_ARRAY Some[] = { ... }; 

y tengo una expresión regular de python 2.7 como esta:

 regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.DOTALL) regmatch = re.search(regx, data) print regmatch.group(0) 

El problema es que la expresión regular no coincide con nada (regmatch is None). Si quito el ^ entonces coincide muy bien.

¿Qué estoy haciendo incorrectamente aquí? Me gustaría añadir el símbolo de búsqueda de inicio de línea

Related of "La expresión regular de Python no coincide con el inicio de línea"

^ comprueba el inicio de la cadena .. agrega re.MULTILINE flag.

 regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.MULTILINE|re.DOTALL) 

El modificador ^ obliga a su motor de expresiones regulares a coincidir con la expresión regular desde el inicio de la cadena. y como tu cadena no comienza con DATA_ARRAY , devuelve None .

Y como @nanny mencionó. Si también quiere que coincida con el inicio de cada línea, use el indicador re.MULTILINE :

 regx = re.compile("^DATA_ARRAY Some\[\].*?};", re.DOTALL|re.MULTILINE) 

Si agrega un indicador re.MULTILINE debería funcionar.

Esto hará que las banderas se vean como re.MULTILINE|re.DOTALL