正则表达式视觉工作室
regex visual studio
我计划使用以下正则表达式来捕获文件的路径和名称:
std::regex capture_path_name_file("(.+)\([^\]+)\.[^\]+$");
但是在运行时(我使用的是Visual Studio),我收到正则表达式错误
error_brack: the expression contained mismatched [ and ]
为了查明原因,我尝试了以下正则表达式:
std::regex test("[^\]")
我得到了同样的错误。
我已经在 regex101.com 中测试了我的正则表达式(略有不同,我不得不使用 .
而不是 \.
)
感谢您的任何帮助。
您
遇到的问题是\
在常规字符串文本中被视为 1 个文字符号。Biffen 在他的评论中很好地解释了它,
[^\]
被视为[^]
,]
被视为文字]
而不是结束字符类分隔符(并且没有匹配的]
进一步关闭字符类)。
正确的答案是:使用_splitpath_s
。
如果你想进一步玩正则表达式,你可以这样修复它:
#include <iostream>
#include <regex>
using namespace std;
int main() {
std::regex rex1(R"((.+?)([^\.]+.[^\.]+)$)");
std::smatch m;
std::string str = "c:\Python27\REGEX\test_regex.py";
if (regex_search(str, m, rex1)) {
std::cout << "Path: " << m[1] << std::endl;
std::cout << "File name: " << m[2] << std::endl;
}
return 0;
}
使用原始字符串文本,可以避免与转义相关的大多数问题。使用 R"((.+?)([^\.]+.[^\.]+)$)"
,它将匹配并捕获到组 1 中文件夹路径,并将带扩展名的文件名捕获到组 2 中。请注意,扩展必须存在。
相关文章:
- 视觉工作室项目.提取源文件夹名称
- 为什么我在尝试模板时遇到视觉工作室C++错误
- 视觉工作室 2017;启用 /permissive 时,类型 "const wchar_t *" 的参数与类型 "PWSTR" 的参数不兼容
- remove(str.begin(), str.end(), );无法正常工作(我正在使用视觉工作室 2012)
- 背包问题,视觉工作室问题
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- C++ 调试断言失败 - 矢量下标超出视觉工作室的范围
- 在turbo c++中编译.不在视觉工作室
- 将库文件夹添加到视觉工作室
- 在视觉工作室中以十六进制进行位移位并通过 cout 输出
- 我正在尝试在视觉工作室上创建自己的库/源函数
- 我在视觉工作室中制作了一个类似胭脂的游戏,我想显示玩家的生命值
- 在 UWP 视觉工作室项目中包括外部文件夹
- 视觉工作室未显示符号表?
- 如何在视觉工作室社区中设置竞争性编程站点等环境?
- 无法在视觉工作室社区 2015 中加载项目
- 合成错误不知道为什么会发生这种情况,请检查一下并告诉我这是我的编码还是视觉工作室
- 使用QT Connect时,视觉工作室警告
- 执行视觉工作室异常处理模式
- 在不同的计算机上运行.exe文件.(视觉工作室)