每次我尝试通过包含类表达式(由[
和]
包围的模式)的模式初始化正则表达式时,我的程序结束抛出regex_error
。<登记/>
确切地说,这可能是程序:
// main.cpp
#include <regex>
int main(){
std::regex r("[ab]*");
}
我设法使用
成功构建程序g++ -std=c++11 main.cpp -o main.exe
(我有gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu9)
)
或
clang++ -std=c++11 main.cpp -o main.exe
(Debian clang version 3.2-7ubuntu1 (tags/RELEASE_32/final) (based on LLVM 3.2)
)
但是,在执行main.exe
的两种情况下都会给我:
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
奇怪的是整个事情对于不包括类括号([
和]
)的模式有用,例如std::regex r("ab*")
。
可能是什么问题呢?
谢谢!
更新:
在(1)ecatmur和(2)Cubbi的评论的帮助下,问题以两种方式解决。
(1)或者,您可以安装boost并使用boost::regex
(在确保boost根目录位于包含路径中,然后使用#include <boost/regex.hpp>
)并链接boost_regex
库(用于我这意味着这样编译:{{1}})。
(2)或者,您可以安装libc++并使用g++ -L/usr/lib/i386-linux-gnu/ -lboost_regex main.cpp -o main.exe
谢谢你的帮助!