我有以下代码:
#include <boost/regex.hpp>
#include <iostream>
#include <string>
int main()
{
const std::string input_data("2014-02-20 12:32:15");
const boost::regex reg_exp("[-:\\d\\s]+");
boost::smatch results;
std::cout << boost::regex_match(input_data, results, reg_exp) << '\n';
}
输出
1
如果我从
更改正则表达式"[-:\\d\\s]+"
到
"[\\d:-\\s]+"
此代码将输出“0”,而http://www.regexr.com/则表示一切正常。 boost是否认为“: - \ s”是一系列字符?它是在正则表达式的标准中定义的吗?谁是对的?
答案 0 :(得分:0)
而http://www.regexr.com/表示一切都很好。 boost是否认为“: - \ s”是一系列字符?
Boost和regexr根本不使用相同的正则表达式。这就是为什么您看到具有相同正则表达式的不同输出。 Regexr使用ActionScript附带的风味。另一方面,boost支持Perl, POSIX Basic and POSIX extended regexes syntax
。
是否在正则表达式的标准中定义了?谁是对的?
同样,这一切都取决于正则表达式的运行风格。有些味道可能支持一个功能,而其他功能则不支持。
如果您想在代码中使用它们之前测试正则表达式,建议您使用bregextest。