preg von außen nach innen?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • preg von außen nach innen?

    reguläre Ausdrücke werden von links nach rechts ausgewertet, ok.
    Aber anscheinend werden Sie von außen nach innen angewandt.

    Mein Problem: in "abc adc" wird auf der Suche nach "/a(.*)c/" statt "b" und "d" die Zeichenfolge "bc ad" gefunden.

    Ich meine ich hätte mal einen Schalter gesehen, mit dem man das Verhalten abstellen kann, aber wo war das und/oder wie hieß der?

    Mit negierenden Zeichenklassen geht´s übrigens nicht, da meine a und c jeweils bestimmte HTML-Kommentare sind.
    Kann man vielleicht irgendwie dafür sorgen, das in einem geklammerten Ausdruck eine bestimmte Zeichenkette (z.B. "<!--") nicht vorkommen darf?

    So sieht das momentan aus, aber ich find meine Lösung nicht mehr:
    Code:
      $in = array (
        '1<!--b-->2<!--/-->3',
        '1<!--b-->2<!--/-->3<!--b-->4<!--/-->5',
        '1<!--a-->2<!--/-->3',
        '1<!--a-->2<!--/-->3<!--a-->4<!--/-->5'
      );
      $reg = array(
        '/<!--b-->(.*)<!--\/-->/s',
        '/<!--a-->(.*)<!--\/-->/s'
      );
    
      $soll = array('123', '12345', '13', '135');
      $out = preg_replace($reg, array('$1'), $in);
      for ($i=0; $i<4; $i++)
        echo htmlentities($soll[$i]), '<br>',
          htmlentities($out[$i]), '<br>',
          (strcmp($soll[$i], $out[$i]) ? 'falsch':'ok'), '<hr>';
    Der Fehler beim zweiten String ist ja noch zu ertragen, da die übrig bleibenden HTML-Kommentare nicht angezeigt werden - aber beim letzten ist das fatal.
    Zuletzt geändert von Titus; 12.04.2002, 05:29.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

  • #2
    doch noch wieder gefunden ... im selfhtml hatte es sich versteckt:
    http://selfhtml.teamone.de/cgiperl/s...erig_genuegsam

    So sieht´s richtig aus:
    Code:
      $reg = array(
        '/<!--b-->(.*[b]?[/b])<!--\/-->/s',
        '/<!--a-->(.*[b]?[/b])<!--\/-->/s'
      );
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      Hättest du mein Tutorial studiert, hättest du es auch gewusst

      CAT Music Files

      Kommentar


      • #4
        Hab ich ja, aber irgendwie hab ich´s nicht gefunden.

        Nebenbei: den Modifier /s gibt es in GROß- und kleinschreibung mit unterschiedlichem Effekt.
        Du meinst in deinem Tut das kleine, aber das kommt nicht so 100%ig raus ...
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Hab ich ja, aber irgendwie hab ich´s nicht gefunden.

          Ist der Absatz direkt nach der Aufstellung der Quantifier....
          Vielleicht hätte ich dem Ganzen 'ne eigene Überschrift verpassen sollen...


          Nebenbei: den Modifier /s gibt es in GROß- und kleinschreibung mit unterschiedlichem Effekt.
          Du meinst in deinem Tut das kleine, aber das kommt nicht so 100%ig raus ...

          Hm... denk ich schon... bei 's-Modifier' kommt die Kleinschreibung eigentlich ziemlich deutlich raus...

          CAT Music Files

          Kommentar


          • #6
            Original geschrieben von Sky
            Ist der Absatz direkt nach der Aufstellung der Quantifier....
            Vielleicht hätte ich dem Ganzen 'ne eigene Überschrift verpassen sollen...
            Oh stimmt ... jetzt seh ich´s auch.
            Aber ich hab´s halt nur durch die Überschrift im selfhtml gefunden - gierig/genügsam - schön aussagekräftig
            mein Sport: mein Frühstück: meine Arbeit:

            Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

            Kommentar

            Lädt...
            X