gpt4 book ai didi

c++ - 运行正则表达式时未经检查的异常 - 从文件路径获取没有扩展名的文件名

转载 作者:行者123 更新时间:2023-11-30 05:20:00 26 4
gpt4 key购买 nike

我有这个简单的程序

string str = "D:\Praxisphase 1 project\test\Brainstorming.docx";
regex ex("[^\\]+(?=\.docx$)");
if (regex_match(str, ex)){
cout << "match found"<< endl;
}

期望结果为真,我的正则表达式正在运行,因为我已经在线尝试过它,但是当尝试在 C++ 中运行时,应用程序抛出未经检查的异常。

最佳答案

首先,在定义正则表达式时使用原始字符串文字以避免反斜杠问题(\. 不是有效的转义序列,您需要 "\\."R"(\.)")。其次,regex_match 需要一个完整的字符串匹配,因此,使用regex_search

#include <iostream>
#include <regex>
#include <string>
using namespace std;

int main() {
string str = R"(D:\Praxisphase 1 project\test\Brainstorming.docx)";
// OR
// string str = R"D:\\Praxisphase 1 project\\test\\Brainstorming.docx";
regex ex(R"([^\\]+(?=\.docx$))");
if (regex_search(str, ex)){
cout << "match found"<< endl;
}
return 0;
}

参见 C++ demo

请注意 R"([^\\]+(?=\.docx$))" = "[^\\\\]+(?=\\. docx$)",第一个中的 \literal 反斜杠(您需要正则表达式模式中的两个反斜杠来匹配 \ 符号),在第二个中,4 个反斜杠是声明 2 个文字反斜杠所必需的,这些反斜杠将匹配输入文本中的单个 \

关于c++ - 运行正则表达式时未经检查的异常 - 从文件路径获取没有扩展名的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40860634/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com