我正在开发一个在基于linux的系统上运行的商业(非开源)C++项目.我需要在C++代码中做一些正则表达式.(我知道:我现在有2个问题.)
问题:经常从C/C++开始使用正则表达式的人建议我查看哪些库?快速搜索引起了我的注意:
1)Boost.Regex(我需要阅读Boost软件许可证,但这个问题与软件许可证无关)
2)C(不是C++)POSIX正则表达式(#include <regex.h>,regcomp,regexec等)
3)http://freshmeat.net/projects/cpp_regex/ (我对此一无所知;似乎是GPL,因此无法在此项目中使用)
我试图在C++ 11代码中使用std :: regex,但看起来支持有点儿错误.一个例子:
#include <regex>
#include <iostream>
int main (int argc, const char * argv[]) {
std::regex r("st|mt|tr");
std::cerr << "st|mt|tr" << " matches st? " << std::regex_match("st", r) << std::endl;
std::cerr << "st|mt|tr" << " matches mt? " << std::regex_match("mt", r) << std::endl;
std::cerr << "st|mt|tr" << " matches tr? " << std::regex_match("tr", r) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
输出:
st|mt|tr matches st? 1
st|mt|tr matches mt? 1
st|mt|tr matches tr? 0
Run Code Online (Sandbox Code Playgroud)
当使用gcc(MacPorts gcc47 4.7.1_2)4.7.1编译时,使用
g++ *.cc -o test -std=c++11 …Run Code Online (Sandbox Code Playgroud) 我不懂.GCC应该支持但是符合他们的 http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr1
状态页面"不支持7个正则表达式".
但是在"28正则表达式" - 它们被检查为支持
http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2011
你能解释一下什么是标准,什么不是?