ファイルパスの設定済みのパラメータを置き換えることができないような正規表現の置き換えの問題があります。ファイルパスのための検索/置換boost regex C++
正規表現は完璧ではないかもしれないが、それは正常に動作するようです:ここで
は、私がこれまで持っているものです。
正規表現:^(?<path>[^\\/*?<>|]+)\\\\(?<filename>.+)\\.(?<ext>.mp4$)
ファイル名の一致結果名:$2
は
それでは、これは拡張子がmp4形式があるファイルのリストを検索し、設定された一致結果を使用しているやっている、それはとしてそれを返します。 「ファイル名」。
ターゲット文字列として、
\\\\folder\music\hello.mp4
結果のファイル名=「hello」を
私は何をしたいのは、正規表現の試合の結果のいずれかを取ることができると置き換えることができるようです設定された設定によるファイル/拡張子/パスの名前。
だから誰かが一致したすべての結果がファイル名を「さようなら」に置き換えたいのであれば、これをどうやって達成するのですか?これは私が今持っているものです。
std::string sz_regex_pattern("^(?<path>[^\/*?<>|]+)\\(?<filename>.+)\.(?<ext>.mp4$)");
boost::cmatch rm;
boost::regex pattern(sz_regex_pattern, regex::icase|regex_constants::perl);
std::string complete_file_name_path = "\\folder\music\hello.mp4";
bool result = boost::regex_match(complete_file_name_path , rm, pattern);
std::string old_filename= rm.format("$2"); // returns the name of the file only
こんにちは\動作しているように見えますが、フォルダはそうと同じ名前ではありませんファイル名に限り、 \\フォルダ\音楽は何\ hello.mp4は以下regex_replaceの持つ問題点を持っているでしょう。
std::string new_filename = "goodbye";
std::string sz_new_file_name_path = boost::regex_replace(complete_file_name_path, old_filename, new_filename);
ので、私は後に、
boost::filesystem::rename(complete_file_name_path, sz_new_file_name_path);
任意の助けいただければ幸いできます。
私はいくつかのより多くの本について考えて交換が不要です。 – EdM