0

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

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

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

4

2 回答 2

0

\\前面的目的是什么?第一个可能会导致错误,因为正则表达式没有转义序列。删除那些 (`L"(Project)(\d\d)\.(txt)"),它应该可以工作。Pt\P

当我在做的时候:为什么要捕获必须是常量的字符串。我会写这个L"Project(\\d\\d)\\.text",并完成它,只使用L"Project"andL"txt"而不是第一个和第三个捕获。

于 2012-07-02T10:02:54.453 回答
0

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

于 2012-07-02T09:52:09.303 回答