Denis: Hilfe bei regulärem Ausdruck

Hallo,

leider konnte ich durch die Suche keine Antwort auf meine Frage finden. Ich brauche einen regulären Ausdruck, der genau eine bestimmte Zeichenkette überprüft. Bsp:

Gesuchte Zeichenkette ist "Denis", der reguläre Ausdruck der genau diese Zeichenkette findet, sollte nach meinem Anfängerverständnis ^Denis$ sein. Ist es aber nicht...

Wie kann ich mittels regulärem Ausdruck prüfen, ob eine Zeichenkette nur "Denis"  (ohne Anführungszeichen) enthält?

Grüße Denis

  1. hi,

    Gesuchte Zeichenkette ist "Denis", der reguläre Ausdruck der genau diese Zeichenkette findet, sollte nach meinem Anfängerverständnis ^Denis$ sein. Ist es aber nicht...

    Wenn du wissen willst, ob in einem String nur "Denis" drinsteht - was willst du dann mit regulären Ausdrücken?
    Dann nimm den Vergleichsoperator.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Die Funktion, die ich verwenden muss, erwartet einen regulären Ausdruck, deshalb der ganze Käse...

      Kann mir jemand sagen, wie ich das hinbekomme?

      Denis

      1. Dein Ausdruck ist schon richtig. Vermutlich verstehst du die Funktion falsch, die du verwendest.

  2. Prüfe es mit $result = stristr("Ich heiße Denis", "Denis").

    1. Hä??

      Ich brauche nur einen regulären Ausdruck, der überprüft, ob eine Zeichenkette exakt einer vorgebenen Zeichenkette entspricht.

  3. Hallo,

    leider konnte ich durch die Suche keine Antwort auf meine Frage finden. Ich brauche einen regulären Ausdruck, der genau eine bestimmte Zeichenkette überprüft. Bsp:

    Gesuchte Zeichenkette ist "Denis", der reguläre Ausdruck der genau diese Zeichenkette findet, sollte nach meinem Anfängerverständnis ^Denis$ sein. Ist es aber nicht...

    Wie kann ich mittels regulärem Ausdruck prüfen, ob eine Zeichenkette nur "Denis"  (ohne Anführungszeichen) enthält?

    Grüße Denis

    Der Reguläre ausdruck ^Denis$ passt nur auf Folgenden String:

    "Denis"

    Er passt nicht auf diesen String:

    "Hier hats auch Denis drin"

    Das Bauelement "^" signalisiert den Anfang des String, das Element "$" das Ende, also darf ausser "Denis" nichts sonst im String stehen.

    Hier hats ne schöne Liste mit Bauelementen für Reguläre Ausdrücke:

    http://www.dclpfaq.de/q/q-regexp-bauelemente.html

    Wenn du aber wirklich nur nach "Denis" Suchen möchtest, sind reguläre ausdrücke nicht das was du suchst, vermutlich würde dir dann http://ch2.php.net/strstr schon reichen.

    1. Ne das passt schon, ich will wirklich nur nach "Denis" suchen.

      Hintergrund: Ich programmiere gerade ein Skript für ein sehr spezielles Tool. Dieses Tool hat eine API, die ich in meinem Skript verwende.

      In dieser API wird eine Suchfunktion angeboten, diese brauche als Suchstring einen regulären Ausdruck. Wenn ich  nur den normalen String übergeben, bekommen ich auch Ergebnisse zurück, die zum Teil mit Denis beginnen. Also zB Denis1, Denisafsdf usw.

      Deshalb wollte ich einen regulären Ausdruck, der mir nur "Denis" findet. Dachte es ginge mit ^Denis$ , jedoch bekomme ich trotzdem nicht nur Ergebnisse mit Denis...

      Bei der Hilfe steht, "Der Suchstring ist ein regulärer Ausdruck in GNU - Synax."

      Hilft das weiter??

      1. Hallo Denis.

        Wenn ich  nur den normalen String übergeben, bekommen ich auch Ergebnisse zurück, die zum Teil mit Denis beginnen. Also zB Denis1, Denisafsdf usw.

        Deshalb wollte ich einen regulären Ausdruck, der mir nur "Denis" findet. Dachte es ginge mit ^Denis$ , jedoch bekomme ich trotzdem nicht nur Ergebnisse mit Denis...

        Also suchst du eher so etwas:

        (^|\b)Denis($|\b)

        Zur Erläuterung:

        ^|\b: Entweder am Anfang oder neben einem anderen Wort (\b = word Boundary, Wortgrenze)
        $|\b: Äquivalent

        Bei der Hilfe steht, "Der Suchstring ist ein regulärer Ausdruck in GNU - Synax."

        Noch nie gehört; ich kenne nur POSIX und PCRE.

        Einen schönen Mittwoch noch.

        Gruß, Mathias

        --
        ie:% fl:| br:< va:) ls:& fo:) rl:( n4:~ ss:) de:] js:| mo:| zu:)
        debian/rules
        1. Hi,

          Hallo Denis.

          Wenn ich  nur den normalen String übergeben, bekommen ich auch Ergebnisse zurück, die zum Teil mit Denis beginnen. Also zB Denis1, Denisafsdf usw.

          Deshalb wollte ich einen regulären Ausdruck, der mir nur "Denis" findet. Dachte es ginge mit ^Denis$ , jedoch bekomme ich trotzdem nicht nur Ergebnisse mit Denis...

          Also suchst du eher so etwas:

          (^|\b)Denis($|\b)

          Zur Erläuterung:

          ^|\b: Entweder am Anfang oder neben einem anderen Wort (\b = word Boundary, Wortgrenze)
          $|\b: Äquivalent

          Anfang und Ende des Strings (bzw. der Zeile) werden üblicherweise auch als Wortgrenze erkannt, ^|\b kann also durch \b ersetzt werden, analog $|\b ebenso durch \b.

          (^|\b) wäre aber auch dann ziemlich sinnlos, wenn \b nicht am Anfang matchen würde. Der Ausdruck innerhalb der Klammer matcht immer nur eine Position, also ist der zu fangende ("capture") String immer leer. (?:) wäre also wesentlich sinnvoller. (da aber der Teil innerhalb der Klammer auf \b reduziert weden kann, ist die Klammerung eh überflüssig.

          Bei der Hilfe steht, "Der Suchstring ist ein regulärer Ausdruck in GNU - Synax."
          Noch nie gehört;

          Mastering Regular Expressions (Jeffrey Friedl) erwähnt neben vielen anderen "GNU egrep", "GNU awk", "GNU Emacs" und "GNU sed" in den Tabellen, in denen die jeweilige Syntax für Regex-Konstrukte erklärt wird. Demnach gibt es nicht eine, sondern mind. 4 GNU-Syntaxen für Regexe ...

          cu,
          Andreas

          --
          Warum nennt sich Andreas hier MudGuard?
          O o ostern ...
          Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
    2. gudn tach!

      Der Reguläre ausdruck ^Denis$ passt nur auf Folgenden String:

      "Denis"

      nein, auch "Denis\n" wird gematcht.

      Das Bauelement "^" signalisiert den Anfang des String, das Element "$" das Ende, also darf ausser "Denis" nichts sonst im String stehen.

      ... ausser einem "\n" am ende.

      richtiges ende waere \z statt $.

      prost
      seth

  4. Dann nimm den:

    '/\bDenis\b/'