Hilfe bei regulärem Ausdruck
Denis
- programmiertechnik
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
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
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
Dein Ausdruck ist schon richtig. Vermutlich verstehst du die Funktion falsch, die du verwendest.
Prüfe es mit $result = stristr("Ich heiße Denis", "Denis").
Hä??
Ich brauche nur einen regulären Ausdruck, der überprüft, ob eine Zeichenkette exakt einer vorgebenen Zeichenkette entspricht.
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.
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??
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
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
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
Dann nimm den:
'/\bDenis\b/'