Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] regex alternation

Einklappen

Neue Werbung 2019

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

  • [Erledigt] regex alternation

    Also ich suche das Gegenstück zur alternation posix regexen

    ich dursuche alle ordner nach php dateien und möchte 2 ordner ausschließen
    core/ und templates/

    der regex "/(core|templates)\/modules\/.*\.php"
    trifft auf alle php dateien im unterordner modules der ordner core und templates zu

    jetz will ich aber das genau die beiden ausgeschlossen werden. :S

    @Admin/Mod: Geht der WYSIWYG editor nicht? klicken auf smilies und formatierungen lösen bei mir nichts aus. und ich hab javascript an.


  • #2
    habs -.-
    wusste nicht das man in [] auch gruppieren kann mit ()

    also [^(core|templates)] für die dies wissen wolln.

    Kommentar


    • #3
      Das ist nicht, was du suchst. Mit dem Ausdruck schließt du auch Ordner aus, die mindestens ein Zeichen aus der Zeichenklasse enthalten.

      Sattdessen könntest du preg_match negieren und nach den Ordnern, die du ausschließen möchtest, im Ausdruck suchen.

      [MOD: Thread verschoben]
      http://hallophp.de

      Kommentar


      • #4
        Zitat von madmaurice Beitrag anzeigen
        habs -.-
        wusste nicht das man in [] auch gruppieren kann mit ()

        also [^(core|templates)] für die dies wissen wolln.
        ... und für alle, die es wirklich wissen wollen: Das ist natürlich Unsinn. Du kannst nicht innerhalb von Zeichenklassen (das Zeug in zwischen den eckigen Klammern) Subpatterns einbauen (das Zeug zwischen runden Klammern). Du bist mit deiner Kreation einem "Feature" der PCRE aufgesessen. Die erlauben nämlich als "Delimiter" nicht nur den Forward-Slash vorn und hinten sondern bspw. auch eckige Klammern. Dein PCRE '[^(core|templates)]' ist daher genau dasselbe wie '/^(core|templates)/' und damit nicht unbedingt das, was du erreichen wolltest.

        Update: Ich sehe gerade, du hast im OP das Wort "posix" verwendet. Die Posix-kompatiblen regulären Ausdrücke funktionieren ein bisschen anders, Subpatterns in Zeichenklassen sind aber auch dort nicht erlaubt. Und ich frage mich gerade, welche Funktion du mit deinem RegEx gefüttert hast. Eine zum Verzeichnisse durchsuchen war mir bisher nicht bekannt. Man kann das Ergebnis einer Matching-Funktion auch einfach mit einem ! invertieren anstatt den ganzen RegEx "umzuwenden".
        Wenn man die Wurst schräg anschneidet, hält sie länger, weil die Scheiben größer sind.

        Kommentar

        Lädt...
        X