重复特定的正则表达式模式

时间:2016-02-26 12:07:40

标签: c++ regex boost

我有一个正则表达式模式:

args([
"-key1 val1",
"-key2 2",
"-key3  true"
])

表示模式以@ ABC-开头,后跟一个或多个数字 我希望这个模式能够匹配这个模式一次或多次:

boost::regex regex = "@ABC-\\d+"  

1 个答案:

答案 0 :(得分:1)

使用 grouping construct 并对其应用 quantifier ,并使用^$ anchors 以确保整个字符串与模式匹配:

示例:

R"(^(@ABC-\d+)+$)"

或 - 使用non-capturing group永远不会在内存缓冲区内创建捕获(此分组构造仅用于将子模式分组以匹配字符串序列):

R"(^(?:@ABC-\d+)+$)"
     ^^ 

如果字符串可以为空,请将最后一个+替换为*R"(^(@ABC-\d+)*$)"

请注意,在C ++中,在声明正则表达式模式以避免过多的反斜杠时,首选原始字符串文字。