我正在尝试在 C++ 中构造一个正则表达式,使用boost::regex
该表达式将匹配以 开头MOV
或JMP
之后的单词:\\d:\\d-\\d:\\d
。
例如,MOV:1:2-3:4
或JMP:2:2-3:5
。
我尝试使用表达式 as (MOV|JMP):\\d:\\d-\\d:\\d
,但它对上述两个示例的评估结果为假。
我有两个问题:
- 上面的表达有什么问题?
- 如果我想忽略 MOV 和 JMP 的大小写,什么是正则表达式?
以下内容非常适合我。
#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
你是如何输入表达式的?如果它不是字符串文字,您可能不需要转义反斜杠。