Regex Match Multiline

  • VB.NET
  • .NET (FX) 4.0

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von Niko Ortner.

    Regex Match Multiline

    Schönen guten Tag,
    ich beschäftige mich seit kurzem mit Regex und komme an sich auch gut damit zurecht.
    Normale Match oder auch Replace-Funktionen bekomme ich meist ohne Probleme hin.

    Jetzt brauche ich aber für ein neues Projekt(Http Request) die Möglichkeit, per Regex eine Zeile zu finden und die darauf folgende dann auszulesen.
    Daher jetzt meine Frage ob das überhaupt mit Regex möglich ist oder ob ich da aufm falschen weg bin.


    Verschoben nach Sonstige Problemstellungen
    -Artentus
    It's not a bug, it's a feature

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Artentus“ ()

    HTML-Quellcode

    1. <img src="http://d3a8mw37cqal2z.cloudfront.net/assets/659cdf8a9a4996dcb084df3e3f442fd4/images/flags/de.png" />
    2. <p><span>2014-05-22</span><br />&nbsp;<span itemprop="contentRating">12</span></p>

    Anhand der oberen Zeile kann ich die Zeichenkette eindeutig identifizieren.
    In der zweiten Zeile steht dann der Wert. In diesem Fall: 12
    Leider gibt es die zweite Zeile mehrfach in der HTTP Request
    It's not a bug, it's a feature
    Ich poste nur ungern einen blanken Link, aber das trifft es ziemlich gut:
    stackoverflow.com/questions/17…ined-tags/1732454#1732454
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Ok \n funktioniert
    Vielen Dank

    Edit:
    Jetzt habe ich allerdings das Problem das sich der Wert nicht immer in der 2ten Zeile befindet sondern auch mal in der zwanzigsten.
    Kann man nicht einen "Bereich" auslesen z.b. von bis und diesen dann im zweiten schritt erneut untersuchen ?
    Sich also quasi seinem Ziel nähern?
    It's not a bug, it's a feature

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „mys3lf“ ()

    Hast Du Dir den Link mal angesehen?

    Verlinkter StackOverflow-Thread schrieb:

    Have you tried using an XML parser instead?

    Verwende einen XML-Parser (oder HTML-Parser, wenn nötig). Dann musst Du Dich nicht selbst um das Parsen kümmern, sondern kannst Die Werte, die Du haben willst, einfach rauspicken.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    Doch den Link habe ich mir angeschaut, jedoch erscheint mir das etwas zu umständlich oder nicht ?
    Ich meine auch schon mal gelesen zu haben das es mit regex möglich sein soll "Bereiche" aus einem string heraus zu suchen.
    It's not a bug, it's a feature

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mys3lf“ ()

    @mys3lf
    Entweder, du verwendest RegEx, schreibst ein kompliziertes Pattern und versuchst mit Trial and Error herauszufinden, ob Dein Pattern auch wirklich das macht, was Du willst, und welches bei jeder kleinen Änderung des Aufbaus des Quell-Strings neu geschrieben werden muss, weil es dann nicht mehr zusammenpasst und schon gar nicht wartbar ist.

    Oder Du probierst einfach mal diese zwei drei Zeilen:

    VB.NET-Quellcode

    1. Dim Document As New System.Xml.XmlDocument
    2. Document.LoadXml(DeinQuellString)
    3. Dim ImgTag = Document.GetElementsByWasAuchImmer()

    (Das wäre dann XML)
    Oder du googelst mal nach "html parser .net". Erstes Ergebnis: stackoverflow.com/questions/56…st-way-to-parse-html-in-c
    Erste Antwort verlinkt auf htmlagilitypack.codeplex.com/
    Und da wird direkt auf ein super Beispiel verlinkt: htmlagilitypack.codeplex.com/wikipage?title=Examples
    Noch einfacher geht gar nicht.

    @ErfinderDesRades
    Riecht ein bisschen nach Sarkasmus. Aber sei gewarnt, Sarkasmus funktioniert im Internet nicht richtig.
    Für den Fall, dass es doch nicht Sarkasmus war:
    Ein Html-Parser ist ein Parser, der Html parst.

    http://de.wikipedia.org/wiki/Parser schrieb:

    Ein Parser [...] ist ein Computerprogramm, das in der Informatik für die Zerlegung und Umwandlung einer beliebigen Eingabe in ein für die Weiterverarbeitung brauchbares Format zuständig ist.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils
    nö - war kein Sarkasmus. Ich fands eher bisserl ärgerlich, dass ein Html-Parser dringend empfohlen wird, dann aber nicht gesagt wird, wo man einen herbekommt - wie gesagt: im Framework gibt's das wohl nicht (oder?).
    Aber mittm Agility-Pack hast du ja ein feines Gerät nachgeliefert, nur ist das ganz schön fette Ware, nichtwahr?
    Und "Parser" ist das ja auch nur im weiteren Sinne, es ist halt eine Bibliothek mit der Kern-Klasse "HtmlDocument", in die man Html-Code einlesen kann, und dann auf verschiedenste Weise Abfragen daran stellen.
    Die XmlDocument-Klasse aus deim Beispiel würde man ja auch kaum als Parser bezeichnen.
    Ok, ich verstehe, worauf Du hinaus willst.
    Ich hätte erwartet, dass eine einfache Google-Suche naheliegen würde.
    Die HtmlDocument-Klasse ist zwar kein Html-Parser, aber irgendwo da drin ist einer versteckt. Und diese Klasse scheint der einfachste Weg zu sein, den anzuwerfen.
    Im Framework gibt es eine Möglichkeit, Xml zu parsen. Eine Google-Suche nach "xml parser .net" gibt mehrere Möglichkeiten. Die mit dem XmlDocument ist eine davon.
    Mir ist ebenfalls keine Möglichkeit bekannt, Html vom Framework heraus zu zu verarbeiten. Deshalb der Zusatz "wenn nötig", denn wenn das schon als Xml gültig ist, reichts ja.
    "Luckily luh... luckily it wasn't poi-"
    -- Brady in Wonderland, 23. Februar 2015, 1:56
    Desktop Pinner | ApplicationSettings | OnUtils