を認識しません:
ifstream file_stream("commented.cpp",ifstream::binary);
std::string txt((std::istreambuf_iterator<char>(file_stream)),
std::istreambuf_iterator<char>());
cmatch m;
bool result = regex_search(txt.c_str(), m, regex("^#(\S*)$",regex_constants::basic));
ファイルには、交流電源であり、それはラインで始まります
#include <stdio.h>
私はディレクティブを解析しようとしていますが、regexbuddyでregexpをチェックしましたが、100%で動作しますが、std :: regexでregex_search
はfalseを返します。 $
文字はgettincは認識されず、posix
構文の場合は^
と思われます。 ECMAScript
を使用しようとしましたが、正規表現は、$
シンボルを削除した場合にのみ動作します。
//ecmascript syntax
bool result = regex_search(txt.c_str(), m, regex("^#(\S*)"));
ファイルがバイナリフラグを使用して読んで、そうtxt
文字列は、$
構文のために必要とされるすべての\r\n
の文字を保持しています。私は、この問題を解決する方法を助けます。
しかし '^#(\ S *)$' _doesn't_一致 'の#include'。 '\ S'は空白以外のものにしかマッチしません。 '#include 'に空白があり、 '$'は行末にアンカーしたいので、 '#include'をその正規表現とマッチさせることはできません。 –