2013-05-27 25 views
1

我想在C++中使用boost::regex构造一个正则表达式,它将与MOVJMP之后的之后的字匹配。例如MOV:1:2-3:4JMP:2:2-3:5正则表达式问题使用boost :: regex

我试着用表达式(MOV|JMP):\\d:\\d-\\d:\\d,但是它对上面两个例子的评估是错误的。

我有两个问题:

  1. 什么是错在上面体现在哪里?
  2. 如果我想忽略MOV和JMP的情况,那么正则表达式会是什么?
+0

出于某种原因你不能使用std :: regex吗? [C++正则表达式](http://www.cplusplus.com/reference/regex/) – kfsone

+0

我盒子上的gcc不支持C++ regex。但是,C++ regex是否对给定的例子评估上述表达式为真? – Jimm

回答

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 

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