Coinciden con un par de comentarios en HTML usando expresiones regulares
-
09-09-2019 - |
Pregunta
Tengo una plantilla mako que se ve algo como esto:
% if staff:
<!-- begin staff -->
...
<!-- end staff -->
% endif
De esa manera si paso la variable personal de Verdadera, deben aparecer los comentarios. Estoy intentando probar esto mediante el uso de una expresión regular que se parece a esto:
re.search('<!-- begin staff -->.*<!-- end staff -->', text)
He verificado que los comentarios aparecen en la salida HTML, pero la expresión regular no coincide. Incluso he intentado poner los comentarios (<!-- begin staff -->
y <!-- end staff -->
) a través re.escape, pero aún ninguna suerte. ¿Qué estoy haciendo mal?
O hay una mejor manera de ejecutar esta prueba?
Solución
Por .
predeterminado no coincide con saltos de línea - es necesario añadir la opción re.DOTALL
re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)
Si usted tiene más de una sección del personal, también puede que quiera hacer el partido ungreedy:
re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
Otros consejos
Utilice un analizador de HTML como HTMLParser lugar. Ver ¿Puede dar algunos ejemplos de por qué es difícil de analizar XML y HTML con una expresión regular? por qué.