MudGuard: Hilfe bei regulärem Ausdruck

Beitrag lesen

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.