Regex - Finde den Inhalt von div nach ID mit geschachtelten divs

8

Bevor jemand fragt, mache ich keine Art von screenscraping.

Ich versuche, eine HTML-Zeichenfolge zu analysieren, um ein div mit einer bestimmten ID zu finden. Ich kann nicht für das Leben von mir das zur Arbeit bringen. Der folgende Ausdruck funktionierte in einer Instanz, aber nicht in einer anderen. Ich bin mir nicht sicher, ob es mit zusätzlichen Elementen im HTML zu tun hat oder nicht.

%Vor%

Es findet das erste div mit der richtigen id korrekt, aber es schließt sich dann beim ersten schließenden div und nicht beim verwandten div.

%Vor%

Das sollte zurück bringen

%Vor%

, aber aus irgendeinem Grund ist es nicht. Es bringt zurück:

%Vor%

Hat jemand einen einfacheren Ausdruck, um damit umzugehen?

Um zu verdeutlichen, ist dies in .NET, und ich verwende das DEPTH-Schlüsselwort. Weitere Details finden Sie hier .

    
ncyankee 13.11.2008, 02:41
quelle

4 Antworten

5

In .NET können Sie dies tun:

%Vor%

Sie müssen die Einlinienoption verwenden. Hier ist ein Beispiel mit der Konsole:

%Vor%     
pro3carp3 13.11.2008, 18:20
quelle
5

Sie fragen nach einem regulären Ausdruck, der die Anzahl der in einem DIV-Tag verschachtelten DIV-Tags verfolgen kann? Ich fürchte, das ist mit regulären Ausdrücken nicht möglich.

Sie können einen regulären Ausdruck verwenden, um den Index des ersten DIV-Tags abzurufen, und dann die Zeichen in der Zeichenfolge beginnend mit diesem Index durchlaufen und die Anzahl der geöffneten div-Tags beibehalten. Wenn Sie auf ein geschlossenes div-Tag stoßen und die Anzahl null ist, haben Sie die Start- und Endindizes in der Zeichenfolge, die die gewünschte Teilzeichenfolge enthält.

    
Cybis 13.11.2008 02:46
quelle
2

Cybis spricht die Wahrheit. Diese Art von Dingen fällt in kontextfreie Sprachen, die mächtiger sind als reguläre Sprachen (die Art von Dingen, die durch reguläre Ausdrücke abgedeckt werden). Es gibt eine Menge an Computerwissenschaftstheorie, aber lass es ruhen, um zu sagen, dass jede Sprache, die es wert ist, eine Bibliothek für diese Art von Zeug geschrieben hat, die du wahrscheinlich benutzen solltest.

    
Dan Fego 13.11.2008 02:53
quelle
0

Welche Programmiersprache? Wenn es .Net ist und Sie sicher sind, dass der HTML-Code wohlgeformt ist, können Sie ihn in ein XmlDocument- oder XDocument-Objekt laden und eine Xpath-Abfrage ausführen.

    
Joel Coehoorn 13.11.2008 02:52
quelle

Tags und Links