2017-08-02 2 views
-1

Ich habe das Problem, wenn Sie Regex verwenden, um einige Wörter zu fangen.Wie genau Wörter in der Liste übereinstimmen

Regexr-Link: http://regexr.com/3gfr4

My Regex

Ich benutze \b(menu|mes|close|set)\b Menü zu fangen, mes, in der Nähe, eingestellt. Es funktioniert gut. Aber wie das Bild oben fängt es menu in [email protected]. Ich muss dieses Wort nicht fangen, wenn ich mit @ anfange.

I Versuchen Sie, Regex in \b^(menu|mes|close|set)\b zu ändern. Aber funktioniert nicht korrekt.

Wer weiß, wie das zu beheben, danke!

+0

Wollen Sie sie fangen nur, wenn sie von Räumen umgeben? – Toto

+0

Was ist die Sprache? Und extrahierst du Text oder ersetzt? –

+0

Sie sagen "Wörter in der Liste", wo ist die Liste? Wie entsteht das Muster? Was ist dein ultimatives Ziel? –

Antwort

0

Wenn Sie nur erwarten, dass diese Wörter am Anfang der Zeile stehen, dann haben Sie es in corr geändert ect. Was Sie vermissen ist die m (mehrzeilige) flag

/^\b(menu|mes|close|set)\b/gm 

http://regexr.com/3gfr7

0

1) Ändern Sie die Zeichenfolge mit Leerzeichen um:

$str = " $str "; 

2) ändern Regex:

\s(menu|mes|close|set)\s 
0

Wenn Sie nur Wort durch Leerzeichen oder an beginng oder Ende der Zeichenkette umgeben wollen:

Verwandte Themen