0

C++で正規表現を使用してファイル名を照合したい。目的のファイル名の形式は「ProjectXX.txt」です。ここで、Xは数字である必要があります。私が使用する正規表現のコードは次のようになります。

static const wregex initFile(L"(\\Project)(\\d\\d)\\.(\\txt)");
wsmatch result;
if(regex_match(fileName, result, initFile)) 

windows.hを使用しているので、 CString(したがって)必要です。L""ただし、コードは例外をスローし、正規表現を変更しようとしましたが、ファイル名と一致するように管理できませんでした。正しい正規表現は何ですか?

4

2 に答える 2

0

@hmjd のコメントはほぼ正しいですが、少し広すぎます。も受け付けL"Project[0-9]{2}@txt"ます。あなたがしたいL"Project[0-9]{2}\\.txt"

于 2012-07-02T09:52:09.303 に答える
0

と の\\前の の目的は何ですか? 正規表現にはエスケープ シーケンスがないため、1 つ目はおそらくエラーになります。それら (`L"(Project)(\d\d)\.(txt)") をドロップすると、動作するはずです。Pt\P

そして、私がそれに取り組んでいる間:なぜ定数でなければならない文字列のキャプチャ。最初と 3 番目のキャプチャではなくandL"Project(\\d\\d)\\.text"を使用するだけで、これを書き、それで完了です。L"Project"L"txt"

于 2012-07-02T10:02:54.453 に答える