我有一个正则表达式模式:
args([
"-key1 val1",
"-key2 2",
"-key3 true"
])
表示模式以@ ABC-开头,后跟一个或多个数字 我希望这个模式能够匹配这个模式一次或多次:
boost::regex regex = "@ABC-\\d+"
答案 0 :(得分:1)
使用 grouping construct 并对其应用 quantifier ,并使用^
和$
anchors 以确保整个字符串与模式匹配:
示例:
R"(^(@ABC-\d+)+$)"
或 - 使用non-capturing group永远不会在内存缓冲区内创建捕获(此分组构造仅用于将子模式分组以匹配字符串序列):
R"(^(?:@ABC-\d+)+$)"
^^
如果字符串可以为空,请将最后一个+
替换为*
:R"(^(@ABC-\d+)*$)"
。
请注意,在C ++中,在声明正则表达式模式以避免过多的反斜杠时,首选原始字符串文字。