Komisches RegExp Verhalten

ElGrAnDiOs

Mitglied
hallo,

ich versuche gerade eine RegExp zu bauen, welche einen Namen innerhalb eines Strings findet.
Nicht wirklich schwer, und klappt soweit, bis auf eine Ausnahme:

meine Namen sind wie folgt formatiert: Nachname-Initial vom Vornamen (bspw. Müller-A für Anton Müller)
es treten auch Sonderfälle auf, wie z.B. Doppelnamen, die dann entweder so Müller-AT oder so Müller-A-T (für Anton Thomas Müller) aussehen können.
mein Problem ist, dass die regexp in diesem Fall die Wortgrenze nicht wirklich beachtet und z.B. bei Müller-A-T auch Müller-A findet, der aber eigentlich ein anderer Müller-A ist (von mir auch Andreas Müller)...

da ich mich noch nicht sehr gut mit RegExp auskenne, kann mir vllt. jemand des Rätsels Lösung verraten?
Bin leider durch Suche usw nicht weitergekommen. Habe auch schon versucht den Bindestrich zu escapen und zu negieren, funktioniert aber irgendwie nicht...

meine RegExp:

Code:
"/\b".$name."\b/i"

bereits versucht habe ich:

Code:
"/\b".[$name]."\b[^\-]/i"

gruß
egd
 
Moin,

Wenn du willst, dass dein Suchmuster auf den kompletten String zutreffen muss, dann musst du dies auch notieren

Bsp:
Code:
"/^\b".[$name]."\b[^\-]$/i"

findet Müller-A , aber nicht Müller-A-B

Code:
"/^\b".[$name]."\b[^\-]\b[^\-]$/i"

findet Müller-A-B, aber nicht Müller-A

^ und $ am Anfang und Ende markieren, dass der gesamte String zutreffen muss, und nicht bereits ein Teil ausreichend ist.
 
ne also irgendwie is das nich das was ich brauche...
habs auch grad mal getestet und es funktioniert nicht... ich dachte das Dach ^ und das Dollar Zeichen symbolisieren Stringanfang und -ende ?

also ich will einfach nur, dass wenn ich "Müller-A" suche, er bei "Müller-A-B" nicht vorgibt, ihn gefunden zu haben. Aber scheinbar greifen die Wortgrenzen bei dem zweiten Bindestrich nicht...
 
funktioniert super, viele dank dafür! :)
habs noch ein bisschen abgewandelt, weil mir noch eingefallen ist, das natürlich ein simples $ am Ende seinen Zweck erfüllt...

sprich
Code:
"/\b".[$name]."-[a-z]$\b/i"
 
Zurück