Frage

Ich versuche, den Aufwand für die ASP.NET-Auto-Benennung von Serversteuerelementen zu erarbeiten. Ich habe eine Seite, die von Hunderten von verschachtelten ASP.NET-Steuerelemente gerendert 7000 Zeilen HTML enthält, von denen viele id / name Attributen, die Hunderte von Zeichen lang sind.

Was ich würde im Idealfall wie ist etwas, das jeden HTML-Attributwert extrahieren würde, die mit „ctl00“ in eine Liste beginnt. Die Regex Suchfunktion in Notepad ++ wäre perfekt, wenn ich nur wüsste, was der Regex sein sollte?

Als Beispiel, wenn die HTML ist:

würde ich die Ausgabe gerne so etwas wie sein:
name = "ctl00 $ Header $ Suche $ Keywords"
Eine erweiterte Suche kann den Elementnamen als auch (z.B. Steuerungsart):
Eingang | name = "ctl00 $ Header $ Suche $ Keywords"

Um zu bewältigen sowohl Identifikation und Name Attribute Ich werde einfach die Suche erneut ausführen, suche Id anstelle von Namen (das heißt ich nicht brauche etwas, das für beide zur gleichen Zeit suchen).

Die endgültige Ausgabe wird eine Excel-Bericht, dass die Anzahl der Server-Steuerelemente auf der Seite auflistet, und die Länge des Namens der einzelnen, möglicherweise durch Steuertyp sortiert.

War es hilfreich?

Lösung 3

meine eigene Frage zu beantworten, ist der einfachste Weg, dies zu tun, ist BeautifulSoup zu verwenden, die ‚schmutzigen HTML‘ Python-Parser, deren Tagline ist:

"Du hast nicht diese schreckliche Seite schreiben. Sie sind nur ein paar Daten aus ihm heraus zu bekommen versuchen. Gerade jetzt, Sie kümmern sich nicht wirklich das, was HTML ist aussehen soll. Genauso wenig wie diesen Parser ".

Es funktioniert, und es ist von hier - http://crummy.com/software/BeautifulSoup

Andere Tipps

Schnell und schmutzig:

Suchen Sie nach

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

Dies wird einen beliebigen Text übereinstimmen, wie ein Attribut aussieht, z.B. name="ctl00test" oder attr = "ctl00longer text". Es wird nicht überprüft, ob dies wirklich innerhalb eines HTML-Tag auftritt - das ist ein wenig schwieriger ist, zu tun und vielleicht überflüssig? Es wird auch nicht entgangen Zitate überprüft innerhalb des Namen des Tags. Wie üblich bei den regulären Ausdrücken, benötigt die Komplexität hängt davon ab, was genau wollen Sie passen und wie Sie Ihre Eingabe sieht aus wie ...

"7000"? „Hunderte“? Lieber Gott.

Da Sie suchen gerade an der Quelle in einem Texteditor, versuchen Sie dies ... / (id | name) = "ct [^"] * "/

Ich schlage vor, XPath, wie in diesem Frage

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top