在C ++中使用regex匹配文件名

时间:2012-07-02 09:24:31

标签: c++ regex

我想在C ++中使用regex匹配文件名。所需文件名的格式为 “ProjectXX.txt”,其中X应为数字。我使用的正则表达式的代码看起来:

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

我需要CString(因此L"")因为我使用的是windows.h。但是,代码抛出一个异常,虽然我试图修改正则表达式,但我无法管理它以匹配文件名。什么是正确的正则表达式?

2 个答案:

答案 0 :(得分:0)

@ hmjd的评论几乎是正确的,但有点太宽了。它也会接受L"Project[0-9]{2}@txt"。你想要L"Project[0-9]{2}\\.txt"

答案 1 :(得分:0)

\\Pt的用途是什么?第一个会 可能会导致错误,因为正则表达式没有逃脱 序列\P。删除那些(`L"(项目)(\ d \ d)\。(txt)"),然后 应该工作。

虽然我在谈论它:为什么捕获必须是常数的字符串。 我写了这个L"Project(\\d\\d)\\.text",并且完成了它 使用L"Project"L"txt"而不是第一个和第三个 捕获。