我正在学习c ++正则表达式。 下面的代码可以通过g ++ 4.8.5编译,但是当我运行它时,程序会抛出异常和核心转储:
$ ./17.3
terminate called after throwing an instance of 'std::regex_error'
what(): regex_error
Aborted (core dumped)
gdb显示第12行:regex r(pattern, regex_constants::ECMAScript);
。
我将代码放入http://cpp.sh/,该代码可以正确运行并获得正确的结果。
我的编译器太旧了吗? 但是其他使用g ++ 4.8.5编译的正则表达式的程序可以正常运行, 谁能告诉我为什么?非常感谢。
#include <regex>
#include <string>
#include <iostream>
using namespace std;
int main()
{
string pattern("[^c]ei");
pattern = "[[:alpha:]]*" + pattern + "[[:alpha:]]*";
regex r(pattern, regex_constants::ECMAScript);
smatch results;
string test_str = "receipt freind theif receive";
try {
if (regex_search(test_str, results, r)) {
cout << results.str() << endl;
}
} catch (regex_error e) {
cout << e.what() << "\ncode: " << e.code() << endl;
}
}