Regex, um ein Wort mit + (plus) Zeichen zu vergleichen

7

Ich habe einige Zeit verbracht, aber immer noch zur Lösung. Ich brauche einen regulären Ausdruck, der in der Lage ist, Wörter mit Zeichen (wie c ++) in string zu vergleichen.

Ich habe /\bword\b/ verwendet, für "normale" Wörter funktioniert es OK. Aber sobald ich /\bC\+\+\b/ versuche, funktioniert es einfach nicht. Irgendwie funktioniert das mit einem Pluszeichen darin falsch.

Ich brauche eine Regex, um zu erkennen, ob die Eingabezeichenfolge ein c ++ Wort enthält. Eingabe wie,

%Vor%

usw.

ps. Verwenden von C #, .Net Regex.Match-Funktion.

Danke für Ihre Hilfe!

    
Alexander Beletsky 04.09.2010, 11:06
quelle

4 Antworten

15

+ ist ein Sonderzeichen, also musst du es umgehen

%Vor%

Beachten Sie, dass wir \b nicht verwenden können, weil + kein Wortzeichen ist.

    
kennytm 04.09.2010, 11:08
quelle
5

Das Problem liegt nicht beim Plus-Zeichen, das Sie korrekt gematcht haben, sondern bei der \b -Sequenz. Es gibt eine Wortgrenze an, die ein Punkt zwischen einem Wortzeichen (alphanumerisch) und etwas anderem ist. Plus ist kein Wortzeichen, daher müsste für \b ein Wortzeichen direkt nach dem letzten Pluszeichen stehen.

\bC\+\+\b entspricht "Test C ++ Test", aber nicht "Test C ++ Test" zum Beispiel. Versuchen Sie etwas wie \bC\+\+\s , wenn Sie erwarten, dass nach dem letzten Pluszeichen ein Leerzeichen erscheint.

    
Jakob Borg 04.09.2010 11:10
quelle
2

Pluszeichen haben eine besondere Bedeutung, daher musst du sie mit \ umgehen. Die gleiche Regel gilt für diese Zeichen: \, *, +, ?, |, {, [, (,), ^, $,., #, und Leerraum

UPDATE: Das Problem war mit \b sequence

    
Viktor Stískala 04.09.2010 11:10
quelle
0

Wie die anderen sagten, ist Ihr Problem nicht das + -Zeichen, das Sie korrekt maskiert haben, sondern das \b , das ein Zeichen mit der Länge null ist, das die Wortgrenze zwischen Wort \w und Nicht-Wort übereinstimmt. Wort \W char.

Es gibt noch einen weiteren Fehler in Ihrer Regex, Sie möchten char C (Großbuchstaben) mit c++ (Kleinbuchstaben) abgleichen. Dazu müssen Sie Ihre Regex in /\bc\+\+/ ändern oder die i verwenden Modifikator, um die Groß- und Kleinschreibung zu berücksichtigen: /\bc\+\+/i

    
Toto 04.09.2010 11:33
quelle

Tags und Links