• C++ | 使用正则表达式匹配特定形式的字符串


    C++ | 使用正则表达式匹配特定形式的字符串

    在 C++ 中,可以使用 头文件提供的正则表达式库来对特定形式的字符串进行匹配操作。

    常用的正则表达式模式语法

    1. 普通字符

      • 普通字符会按照其字面意义进行匹配,例如 a 会匹配字符 a
    2. 转义字符

      • \:用于转义特殊字符,例如 \\ 匹配 \
      • .:匹配除换行符外的任意字符。
    3. 字符类

      • [abc]:匹配字符 a, b, 或 c 中的任意一个。
      • [a-z]:匹配 az 范围内的任意字符。
      • [^abc]:匹配除 a, b, 和 c 之外的任意字符。
    4. 重复次数

      • *:匹配前面的子表达式零次或多次。
      • +:匹配前面的子表达式一次或多次。
      • ?:匹配前面的子表达式零次或一次。
      • {n}:匹配前面的子表达式恰好 n 次。
      • {n,}:匹配前面的子表达式至少 n 次。
      • {n,m}:匹配前面的子表达式至少 n 次但不超过 m 次。
    5. 定位符

      • ^:匹配输入字符串的开始。
      • $:匹配输入字符串的结尾。
      • \b:匹配单词边界。
    6. 捕获组

      • (pattern):捕获匹配的子表达式。
    7. 特殊字符

      • \d:匹配任意数字字符。
      • \w:匹配任意字母、数字或下划线字符。
      • \s:匹配任意空白字符。

    使用正则表达式匹配字符串用法示例

    #include 
    #include 
    #include 
    
    int main() {
        std::string input = "(1,2),(2,3),(4,5)";
    
        // 定义正则表达式模式
        std::regex pattern("\\((\\d+),(\\d+)\\)");
    
        // 迭代器用于遍历匹配结果
        std::sregex_iterator it(input.begin(), input.end(), pattern);
        std::sregex_iterator end;
    
        // 遍历匹配结果并输出
        while (it != end) {
            std::smatch match = *it;
            std::cout << "Matched: " << match.str() << std::endl;
            std::cout << "Group 1: " << match[1].str() << std::endl; // 第一个括号内的数字
            std::cout << "Group 2: " << match[2].str() << std::endl; // 第二个括号内的数字
            ++it;
        }
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    示例输出:

    Matched: (1,2)
    Group 1: 1
    Group 2: 2
    Matched: (2,3)
    Group 1: 2
    Group 2: 3
    Matched: (4,5)
    Group 1: 4
    Group 2: 5
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    如何选择百科营销机构?如何挑选百科代建公司?
    IO学习系列之使用read和write复制文件内容
    深度学习-神经网络原理2
    Kuhlmann库尔曼控制器维修21.49电源电路板维修特点
    Differential (mathematics)
    logstash 消费kafka数据,转发到tcp端口
    GTK在drawable区域绘图
    web安全之SQL盲注的靶场练习和分析
    SpringBoot连接TDengine集群写入超时
    ubuntu20.04屏幕亮度无法调节的解决方法->安装 brightness-controller-simple 软件
  • 原文地址:https://blog.csdn.net/qq_45909595/article/details/136357394