我在使用C ++中的新正则表达式库时遇到了一些麻烦。这是一个简单的例子:
#include<regex>
#include<string>
#include<iostream>
using namespace std;
int main(){
string text = "123.456";
string pattern = "[0-9]+\\.[0-9]+";
try{
cout << (regex_match(text, regex(pattern, regex_constants::extended)) ? "Pass\n" : "Fail\n");
}catch(...){
cout << "Fail (bad regex)\n";
}
return 0;
}
问题是,无论我使用什么类型的匹配(简单,扩展,grep,egrep,awk等),它总是返回false。如果我使用“regex_constants :: simple”它会抛出异常,因为不支持括号表达式,但我检查了规范,它应该可以正常使用“regex_constants :: extended”。
结果如下:
rhobincu@daneel:~/work$ g++ -std=c++11 test.cpp -o test
rhobincu@daneel:~/work$ ./test
Fail
知道我做错了吗?
编辑:这也可能是有用的信息:
rhobincu@daneel:~/work$ g++ --version
g++ (Ubuntu/Linaro 4.8.1-10ubuntu8) 4.8.1
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
答案 0 :(得分:6)