我想在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。但是,代码抛出一个异常,虽然我试图修改正则表达式,但我无法管理它以匹配文件名。什么是正确的正则表达式?
答案 0 :(得分:0)
@ hmjd的评论几乎是正确的,但有点太宽了。它也会接受L"Project[0-9]{2}@txt"
。你想要L"Project[0-9]{2}\\.txt"
答案 1 :(得分:0)
\\
和P
前t
的用途是什么?第一个会
可能会导致错误,因为正则表达式没有逃脱
序列\P
。删除那些(`L"(项目)(\ d \ d)\。(txt)"),然后
应该工作。
虽然我在谈论它:为什么捕获必须是常数的字符串。
我写了这个L"Project(\\d\\d)\\.text"
,并且完成了它
使用L"Project"
和L"txt"
而不是第一个和第三个
捕获。