跳到主要内容

请列举C++正则表达式的重复模式 ?

参考答案:

在C++中,正则表达式库(regex)允许我们使用特定的字符和符号来匹配字符串的重复模式。以下是一些常用的重复模式:

  1. *:匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。
  2. +:匹配前面的子表达式一次或多次。例如,zo+ 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。
  3. ?:匹配前面的子表达式零次或一次。例如,do(es)? 可以匹配 "do" 或 "does"。
  4. {n}:n 是一个非负整数。匹配确定的 n 次。例如,zo{2} 能匹配 "zoo"。
  5. {n,}:n 是一个非负整数。至少匹配 n 次。例如,zo{2,} 能匹配 "zoo", "zoooo", "zoooooooo"等。
  6. {n,m}:m 和 n 均为非负整数,其中 n <= m。最少匹配 n 次且最多匹配 m 次。例如,zo{1,3} 将匹配 "zo", "zoo", 和 "zooo"。

注意,在C++中,为了使用这些正则表达式,你需要包含 <regex> 头文件,并使用 std::regex 相关的函数和类。

下面是一个简单的C++例子,展示了如何使用正则表达式匹配重复的字符:

#include <iostream>
#include <regex>
#include <string>

int main() {
    std::string s("aaabbbcccddd");
    std::regex e("a{3}b{3}c{3}d{3}");
    std::smatch match;

    if (std::regex_search(s, match, e))
        std::cout << "match found: " << match.str() << std::endl;
    else
        std::cout << "match not found" << std::endl;

    return 0;
}

这个例子中,我们试图在字符串 "aaabbbcccddd" 中找到一个匹配 "aaa", "bbb", "ccc", "ddd" 的模式。如果找到了,就会输出 "match found: aaabbbcccddd"。