Domanda

Sto cercando di lavorare fuori l'overhead del ASP.NET denominazione automatica dei controlli server. Ho una pagina che contiene 7.000 righe di codice HTML rese da centinaia di controlli ASP.NET nidificate, molti dei quali hanno attributi ID / Name che sono centinaia di caratteri di lunghezza.

quello che vorrei idealmente come è qualcosa che potrebbe estrarre ogni valore attributo HTML che inizia con "ctl00" in una lista. La funzione regex Trova in Notepad ++ sarebbe perfetto, se solo sapessi quello che la regex dovrebbe essere?

Per fare un esempio, se l'HTML è:

Vorrei l'uscita essere qualcosa di simile:
name =
"ctl00 $ Header $ Ricerca $ Parole" Una ricerca più avanzata potrebbe includere il nome dell'elemento così (per esempio tipo di controllo):
Ingresso | name = "ctl00 $ Header $ Ricerca $ Parole"

Per far fronte sia con Id e Nome attributi mi limiterò a eseguire nuovamente la ricerca alla ricerca di Id al posto del nome (vale a dire non ho bisogno di qualcosa che la ricerca di entrambi allo stesso tempo).

L'output finale sarà un report di Excel che elenca il numero di controlli server sulla pagina, e la lunghezza del nome di ciascuna, possibilmente allineati secondo tipo di controllo.

È stato utile?

Soluzione 3

Rispondendo alla mia domanda, il modo più semplice per farlo è quello di utilizzare BeautifulSoup, la 'sporca HTML' parser Python il cui slogan è:

"Non hai scrivere quella pagina terribile. Stai solo cercando di ottenere alcuni dati fuori di esso. In questo momento, non si interessa davvero quello che HTML è supposto per assomigliare. Né questo parser . "

Funziona, ed è disponibile da qui - http://crummy.com/software/BeautifulSoup

Altri suggerimenti

veloce e sporco:

Cerca

\w+\s*=\s*"ctl00[^"]*"

Questa corrisponderà qualsiasi testo che appare come un attributo, per esempio name="ctl00test" o attr = "ctl00longer text". Non sarà verificare se questo avviene realmente all'interno di un tag HTML - che è un po 'più difficile da fare e forse inutile? Sarà, inoltre, non verificare la presenza di citazioni sfuggiti all'interno il nome del tag. Come al solito con regex, la complessità richiesta dipende da cosa esattamente si vuole abbinare e quello che sembra il vostro input come ...

"7000"? "centinaia"? Caro Dio.

Dato che si sta solo guardando alla fonte in un editor di testo, provate questo ... / (id | nome) = "ct [^"] * "/

Suggerisco XPath, come in questo domanda

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top