Christian S.: (REGEXP) "Nicht" Teilstring matchen

Hi,

ich würde gerne mit Hilfe regulärer Ausdrücke einen String matchen, in dem _nicht_ der Teilstring "xyz" drin vorkommt.

Leider habe ich dazu nichts gefunden.

In allen Tutorials steht immer nur wie man ein einzelnes Character negiert:
[^a]

Das Negationszeichen geht also anscheinend nur direkt nach der öffnenden eckigen Klammer, also nur bei Character-Klassen.

Wie negiere ich aber einen ganzen String?

Gruß
Christian

  1. Hallo Christian,

    Wie negiere ich aber einen ganzen String?

    Ich denke du suchst:
    (?![string])

    preg_match('/abc(?!def)/','abcdef') => geht nicht

    preg_match('/abc(?!def)/','abcbla') => geht

    Gruß,
    Dodwin

    --
    Dodwin
    1. Ich denke du suchst:
      (?![string])

      nein, eher nicht. Das ist eine Look-Ahead-Assertion...

      Die schaut nur, ob nach einem Match nicht der angegebene Match steht.

      Hab damit schon mal rumgespielt, und der Interpreter hat sich beschwert, dass der vorangehende String nicht von "fixed length" sei, wenn man z.B. mit Qunatifiern arbeitet.

      Ich suche eher nach einer Möglichkeit, einen String zu matchen, in dem nicht der String "Beispiel" drin vorkommt.
      oder klassisches Beispiel: Ein Text, der keine E-Mail-Adresse enthält.

      Gruß
      Christian

      1. Hallo Christian,

        nein, eher nicht. Das ist eine Look-Ahead-Assertion...

        *nachguck* Oh ja... Was falsches im Kopf gehabt.

        Die schaut nur, ob nach einem Match nicht der angegebene Match steht.

        Eventuell schaffst du es irgendwie mit (?!xxx) oder/und (?<!xxx)...
        Ansonsten wirst du wohl vorher überprüfen müssen ob der String enthalten ist.

        Gruß,
        Dodwin

        --
        Dodwin
  2. Hallo,

    ich würde gerne mit Hilfe regulärer Ausdrücke einen String matchen, in dem _nicht_ der Teilstring "xyz" drin vorkommt.

    ...

    Wie negiere ich aber einen ganzen String?

    Wahrscheinlich verstehe ich Dein Anliegen nicht richtig? Aber je nachdem, was Du erreichen möchtest, wäre es nicht möglich einfach die Funktion zu negieren?
    if (!preg_match("/xyz/", $string)) {
      #mach was
    }
    netten Tag
    ^da Powl

    --
    ===============================
    powl.hat-gar-keine-homepage.de/