Corrispondenza un paio di commenti in HTML usando le espressioni regolari
-
09-09-2019 - |
Domanda
Ho un modello di mako che sembra qualcosa di simile:
% if staff:
<!-- begin staff -->
...
<!-- end staff -->
% endif
In questo modo se mi passa la variabile personale come vera, dovrebbero apparire tali osservazioni. Sto cercando di provare questo utilizzando un'espressione regolare che assomiglia a questo:
re.search('<!-- begin staff -->.*<!-- end staff -->', text)
Ho verificato che i commenti vengono visualizzati in output HTML, ma l'espressione regolare non corrisponde. Ho anche provato a mettere i commenti (<!-- begin staff -->
e <!-- end staff -->
) attraverso re.escape, ma ancora senza fortuna. Che cosa sto facendo di sbagliato?
O c'è un modo migliore per eseguire questo test?
Soluzione
Per impostazione predefinita .
non corrisponde a capo - è necessario aggiungere l'opzione re.DOTALL
re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)
Se si dispone di più di una sezione personale, si potrebbe anche voler fare la partita ungreedy:
re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
Altri suggerimenti
Utilizzare un parser HTML come HTMLParser invece . Vedere Potete fornire alcuni esempi del perché è difficile analizzare XML e HTML con una regex? del perché.