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!
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.
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
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