1

ブーストで次の正規表現に問題があります。

const boost::regex eComment("^\/\*[\s\S]*?\*\/|^\/\/");

この正規表現でプログラムを実行すると、次のメッセージが表示されて中止されます。

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::regex_error> >'

what():  Invalid preceding regular expression prior to repetition operator.  
The error occured while parsing the regular expression: '^/*[sS]*?*>>>HERE>>>/|^//'.

この正規表現は、*.cppファイル内のコメントを含む行を見つける必要がありますが、行にコードがある場合はスキップする必要があります。

4

1 に答える 1

3

問題は、バックスラッシュ文字をエスケープするのを忘れたことだと思います。各バックスラッシュは、\s\S ではなく \\s\\S のように二重にする必要があります

それが役に立てば幸い

于 2012-09-28T12:33:07.040 に答える