1

我正在尝试在 C++ 中构造一个正则表达式,使用boost::regex该表达式将匹配以 开头MOVJMP之后的单词:\\d:\\d-\\d:\\d

例如,MOV:1:2-3:4JMP:2:2-3:5

我尝试使用表达式 as (MOV|JMP):\\d:\\d-\\d:\\d,但它对上述两个示例的评估结果为假。

我有两个问题:

  1. 上面的表达有什么问题?
  2. 如果我想忽略 MOV 和 JMP 的大小写,什么是正则表达式?
4

1 回答 1

0

以下内容非常适合我。

#include <iostream>
#include <boost/regex.hpp>

int
main(int argc, char** argv)
{
   boost::regex it("(MOV|JMP):\\d:\\d-\\d:\\d");

   bool matches = boost::regex_match("MOV:1:2-3:4", it);

   std::cout << matches << std::endl;
   return 0;
}

这是编译:

svengali ~ % g++ main.c -lboost_regex
svengali ~ % a.out
1
svengali /tmp % g++ --version
g++ (Debian 4.7.2-5) 4.7.2

你是如何输入表达式的?如果它不是字符串文字,您可能不需要转义反斜杠。

于 2013-05-27T20:51:19.110 回答