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

^ 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