提升正则表达式和字符范围

时间:2014-02-06 12:57:29

标签: c++ regex boost boost-regex

我有以下代码:

#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”是一系列字符?它是在正则表达式的标准中定义的吗?谁是对的?

1 个答案:

答案 0 :(得分:0)

  

http://www.regexr.com/表示一切都很好。 boost是否认为“: - \ s”是一系列字符?

Boost和regexr根本不使用相同的正则表达式。这就是为什么您看到具有相同正则表达式的不同输出。 Regexr使用ActionScript附带的风味。另一方面,boost支持Perl, POSIX Basic and POSIX extended regexes syntax

  

是否在正则表达式的标准中定义了?谁是对的?

同样,这一切都取决于正则表达式的运行风格。有些味道可能支持一个功能,而其他功能则不支持。

如果您想在代码中使用它们之前测试正则表达式,建议您使用bregextest