Baeckerman83: Regex Wert zwischen zweit DIV

Hiho!
Ich versuche ade ein regex zu schreiben. Leider will es nicht so wie ich. Es soll mir den Wert zwischen zwei divs meines quellcodes ausgeben. Aber es will nicht. Was mache ich falsch? Folgendes reg ex habe ich:
(?<=<div class="result">).*(?=</div>)

Mein Text:
Hiho <div class="result">Braunschweig</div> test

Der hintere Teil scheint zu stimmen. Aber vorne das grenzt nichts ein. Bekomme ohne den vorderen Teil alles ab Hiho bis g<

  1. Moin Moin!

    Du suchst einen HTML-Parser. RegExp taugen nicht für HTML. (Ausnahme: Du hast sehr genau unter Kontrolle, wie das HTML aussieht, und dann solltest Du über ein anderes Datenaustauschformat als HTML nachdenken.)

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
  2. #<div[^>]*>(.*)</div>#

    => $1 sowas in die richtung?

    1. #<div[^>]*>(.*)</div>#

      => $1 sowas in die richtung?

      Ne das gibt ja die DIVs mit aus, es soll nur der Text ausgeben werden. Ja Quellcode Parsen ist damit net so dolle, will ja nur etwas RegEx üben.

      1. Hi,

        #<div[^>]*>(.*)</div>#
        => $1 sowas in die richtung?
        Ne das gibt ja die DIVs mit aus,

        nur wenn Du die Bedeutung der Zeichen ( und ) im Regex nicht kennst.

        (wobei der genannte Ausdruck versagt, wenn in einem Attributwert des div ein > vorkommt)

        cu,
        Andreas

        --
        Warum nennt sich Andreas hier MudGuard?
        O o ostern ...
        Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
        1. Moin Moin!

          Hi,

          #<div[^>]*>(.*)</div>#
          => $1 sowas in die richtung?
          Ne das gibt ja die DIVs mit aus,

          nur wenn Du die Bedeutung der Zeichen ( und ) im Regex nicht kennst.

          (wobei der genannte Ausdruck versagt, wenn in einem Attributwert des div ein > vorkommt)

          Die RE versagt ebenfalls, wenn im Dokument mehr als ein DIV-Element vorkommt, denn auch in PHP sind REs "greedy".

          Und wenn HTML5 2.0 irgendwann ein neues Element erfindet, dass mit "div" beginnt, fällt die RE ebenfalls auf die Nase.

          Von SGML Minimization will ich gar nicht anfangen, die so verkürzt notierten Elemente findet die RE nicht einmal.

          Der einzig sichere Weg, Daten aus HTML zu extrahieren, ist ein HTML-Parser.

          Alexander

          --
          Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
        2. Hi,

          #<div[^>]*>(.*)</div>#
          => $1 sowas in die richtung?
          Ne das gibt ja die DIVs mit aus,

          nur wenn Du die Bedeutung der Zeichen ( und ) im Regex nicht kennst.

          (wobei der genannte Ausdruck versagt, wenn in einem Attributwert des div ein > vorkommt)

          cu,
          Andreas

          Hiho!
          Ich habe das Regex ausprobiert und das gibt mir die DIVs mit aus. Müsste ich nicht das mit (?=) und (?<=) irgendwie machen? Dachte die wären um Werte anzugeben die dann nicht ausgegeben werden sollen.

          1. Hi,

            #<div[^>]*>(.*)</div>#
            => $1 sowas in die richtung?
            Ne das gibt ja die DIVs mit aus,

            nur wenn Du die Bedeutung der Zeichen ( und ) im Regex nicht kennst.

            (wobei der genannte Ausdruck versagt, wenn in einem Attributwert des div ein > vorkommt)

            Ich habe das Regex ausprobiert und das gibt mir die DIVs mit aus.

            Du hast Dich also nicht über die Bedeutung von ( und ) im Regex informiert ...

            Scheint Dich also nicht zu interessieren ...

            cu,
            Andreas

            --
            Warum nennt sich Andreas hier MudGuard?
            O o ostern ...
            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
            1. Doch ich habe es mir angeschaut, aber erst nicht verstanden. Hatte das immer mit nem Online Tool geteste und da ging es nicht. Habe es jetzt mit dem Quellcode gemacht und da geht es. Danke noch mal. Also das sind dann auch Rückwärtsreferenzen. So wie diese Look-around assertions. Wenn ich das richtig verstanden habe.

              1. @@baeckerman83:

                nuqneH

                Also das sind dann auch Rückwärtsreferenzen. So wie diese Look-around assertions. Wenn ich das richtig verstanden habe.

                Nein, hast du nicht.

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
                1. Hi,

                  Also das sind dann auch Rückwärtsreferenzen. So wie diese Look-around assertions. Wenn ich das richtig verstanden habe.

                  Nein, hast du nicht.

                  Zumindest den Teil, daß das "so wie Look-around assertions Rückwärtsreferenzen sind", hat er richtig verstanden.

                  Capturing parentheses sind keine Rückwärtsreferenzen, Look-around assertions sind keine Rückwärtsreferenzen.
                  Also sind die einen Rückwärtsreferenzen in der gleichen Art wie die anderen - nämlich nicht.

                  ;-)

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  O o ostern ...
                  Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
              2. Hi,

                Doch ich habe es mir angeschaut, aber erst nicht verstanden. Hatte das immer mit nem Online Tool geteste und da ging es nicht. Habe es jetzt mit dem Quellcode gemacht und da geht es. Danke noch mal. Also das sind dann auch Rückwärtsreferenzen. So wie diese Look-around assertions. Wenn ich das richtig verstanden habe.

                Beides sind KEINE backreferences.
                \1, \2 usw. sind (innerhalb des RE) backreferences (und beziehen sich auf capturing parentheses), außerhalb ist die Syntax sprachabhängig (z.B.: $1 in Perl, $matches[1] in PHP, matcher.group(1) in Javas java.util.regex, ...).

                cu,
                Andreas

                --
                Warum nennt sich Andreas hier MudGuard?
                O o ostern ...
                Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
          2. Hi,

            Ich habe das Regex ausprobiert und das gibt mir die DIVs mit aus.

            "Das Regex" gibt in PHP von selber gar nichts aus.
            Die Funktionen, mit denen du reguläre Ausdrücke anwendest, haben unterschiedliche Rückgabewerte - z.T. geben sie unter anderem(!) auch den kompletten Ausdruck, der gematched wurde, mit zurück.

            Bitte lese im Handbuch nach, was die Funktionen jeweils zurückgeben!

            MfG ChrisB

            --
            RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?