【发布时间】:2016-04-26 00:11:55
【问题描述】:
我打算使用以下正则表达式来捕获文件的路径和名称:
std::regex capture_path_name_file("(.+)\\([^\\]+)\\.[^\\]+$");
但是在运行时(我正在使用 Visual Studio)我得到了正则表达式错误
error_brack: the expression contained mismatched [ and ]
试图查明原因,我尝试了以下正则表达式:
std::regex test("[^\\]")
我也遇到了同样的错误。
我已经在regex101.com 中测试了我的正则表达式(略有不同,我必须使用\. 而不是\\.)
感谢您的帮助。
【问题讨论】:
-
在 C++ 语法中,
"[^\\]"表示[^\],在正则表达式中是不匹配的[。如果您要创建一个“非反斜杠”字符类,则必须为 C++ 转义一次,为正则表达式转义一次,即[^\\\\]。 -
它适用于 php,但也应该回答您的问题:stackoverflow.com/a/14783396/4181011
标签: c++ regex c++11 visual-c++ visual-studio-2013