2017-05-12 3 views
-1

文字列内の "^"(ハット記号)の数を数えようとしていますが、次のコードは間違った番号を返します。.NET C++ Regex :: Matches() - > Countが間違った数値を返します

Int32 lNumber = 0; 
String* lString = S"abc^def^ghi^jkl"; 
lNumber = Regex::Matches(lString, S"\^")->Count + 1; 
Console::WriteLine(lNumber); 

//output: 
// 2 

ただし、出力は4になるはずです。代わりに2を得るのはなぜですか。

+0

どのバージョンのC++ですか? posix正規表現ですか? C++のドットネット?!? – sln

+0

これはC++/CLIの場合、 'System :: String *'は不正です( 'String ^'が必要です(注: 'C++ - cli'は' C++ 'ではなく正しいタグです)。 – crashmstr

+0

チップ私はこのタグを変更しました。これは、私が管理している本当に古いプロジェクトです。マネージドとネイティブの両方のC++があります。正直なところ、この特定のプロジェクトでString *が動作する理由はわかりません。代わりにString ^ – reubonwry

答えて

2

"\\^"を使用し、"\^"を使用しないでください。 "\^""^"と同じですが、これは正規表現として「行の先頭」を意味します。

関連する問題