5

正規表現を使って単語を一致させようとしていますが、残念ながら単語境界文字 (\b) には私の好みの文字が十分に含まれていないため、さらに追加したいと考えています。(正確には「+」文字)

これが私が以前持っていたものです(C#ですが、あまり関連性はありません):

string expression = Regex.Escape(word);
Regex regExp = new Regex(@"\b" + expression + @"\b", RegexOptions.IgnoreCase);

この特定の正規表現は「C++」と一致せず、本当に残念だと思いました。そこで、文字クラスで \w 文字を + 文字とともに使用してみました。

string expression = Regex.Escape(word);
Regex regExp = new Regex(@"(?![\w\+])" + expression + @"(?![\w\+])", RegexOptions.IgnoreCase);

しかし、今は何も一致しません...私が見逃しているものはありますか?

4

1 に答える 1

8

+(文字クラスでエスケープする必要はありません)

問題は、最初に否定的な先読みを使用するのに対し、否定的な後読みを使用する必要があることです。試す:

@"(?<![\w+])" + expression + @"(?![\w+])"
于 2013-01-09T10:42:57.853 に答える