在c ++中使用正则表达式类

时间:2014-02-04 20:06:34

标签: c++ regex c++11

每次我尝试通过包含类表达式(由[]包围的模式)的模式初始化正则表达式时,我的程序结束抛出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
谢谢你的帮助!

0 个答案:

没有答案