DonC: RegularExpressions: Teilstring extrahieren

Hi Leutz,

ich möchte mit RegEx einen Teilstring aus einem vorhandenen String extrahieren. Folgender String ist bspw. gegeben:

<meintag>
      Wort1
      <br />
      Wort 2
      <br />
      Wort 3
</meintag>

Ich möchte nun bspw. alles zwischen "<meintag>" und "</meintag>" extrahieren.

Bisher habe ich das über das Pattern

"<meintag>(.*)</meintag>"

probiert, aber es wird keine Übereinstimmung gefunden. Vermutlich hängt es mit den Zeilenumbrüchen zusammen, denn wenn ich alle Zeilenumbrüche entferne, wird das Pattern fündig. Ich habe bereits versucht, mit

"<meintag>(\n\r\s.*)</meintag>"

das Problem zu umgehen, aber auch das hat nicht geholfen.

Wäre super wenn Ihr mir helfen könntet.

Gruß,
Don

  1. Wäre super wenn Ihr mir helfen könntet.

    http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Wäre super wenn Ihr mir helfen könntet.
      http://www.php.net/manual/en/reference.pcre.pattern.modifiers.php

      mfg Beat

      Hi,

      soweit war ich auch schon, nur Asche auf mein Haupt, ich werd nicht wirklich schlau daraus, wo konkret ich die Modifiers angeben muss. Auf der Seite sind zwar alle Modifiers hübsch aufgezählt, nur leider keine Codebeispiele wo genau man diese angeben muss. Hab Nachsicht, bin was RegEx angeht, blutiger Anfänger :-)  Wäre super, wenn Ihr mir anhand meines Codebeispiels weiterhelfen könntet.

      Greetz

      1. Hab Nachsicht, bin was RegEx angeht, blutiger Anfänger :-)

        Zawinski grüßt - warum willst du mit PCRE arbeiten, wo du doch offensichtlich XHTML vorliegen hast?

        Ein XML-Parser ist dafür besser geeignet.

      2. Hallo,

        soweit war ich auch schon, nur Asche auf mein Haupt, ich werd nicht wirklich schlau daraus, wo konkret ich die Modifiers angeben muss. Auf der Seite sind zwar alle Modifiers hübsch aufgezählt, nur leider keine Codebeispiele wo genau man diese angeben muss. Hab Nachsicht, bin was RegEx angeht, blutiger Anfänger :-)  Wäre super, wenn Ihr mir anhand meines Codebeispiels weiterhelfen könntet.

        Abgesehen davon, dass du wohl eher einen XML-Parser brauchst, wie Suit vorgeschlagen hat, kann es ja nicht schaden, wenn du Regular Expressions doch noch lernst ;)

        Du baust das so auf:
        preg_match("/hierdersuchausdruck/siU", ...)

        Die Slashes sind als Begrenzung vom Suchausdruck da - das kann auch ein anderes Zeichen sein.

        Hinter die Endbegrenzung kommen die Modifier. Ich nehme normal siU - in der Dokumentation kannst du ja nachlesen, was das bedeutet. Damit sollte aber auf jeden Fall auch dein Problem abgedeckt sein.

        Gruß
        alex