• regex_replace


    Regex_iterator方法需要输入一个正则表达式,以及一个用于替换匹配的字符串的格式化字符串;这个格式化的字符串可以通过表的转义序列引用匹配子字符串的部分内容;

    转义序列

    $n

    替换第n个捕获的字符串,$1表示第一个捕获组,$2表示第二个捕获组

    $&

    匹配整个正则表达式的字符串,等于$0

    $’

    在输入字符串中,在匹配正则表达式的字符串左侧部分

    $`

    在输入字符串中,在匹配正则表达式的字符串右侧部分

    $$

    美元

    原型:std::string regex_replace(inputSequence,Regex,FormateString,[, Flags]);

    inputSequence可以是C风格的字符串,

    Regex是正则表达式

    FormateString是需要替换掉匹配的子字符串的格式化字符串;

    Flags是可选参数

    在第四个参数可以为以下;

    Flag(标志)

    Expressions(说明)

    Format_default

    默认是替换模式的所有实例,并将所有不匹配的内容复制到结果中;

    Format_no_copy

    默认是替换模式的所有实例,并将所有不匹配的内容不复制到结果中;

    Formate_first_only

    只替换模式里的第一个实例

    在没有第四个参数的时候(也就是第四个参数默认的)实例:

    std::regex r("<hl>(.*)</hl><pl>(.*)</pl>");
        const std::string formate = "H1 = $1 and P1 = $2";
        std::string str;
        while(true)
        {
            if(!std::getline(std::cin,str) || str == "q")
            {
                break;
            }else
            {
                    std::string result = std::regex_replace(str,r,formate);
                    std::cout << result << std::endl;
            }
        }

    输入:

    <body><hl>Header</hl><pl>Some text</pl></body>

    输出:

    <body>H1 = Header and P1 = Some text</body>

    当我们写入第四个参数的时候:

        std::regex r("<hl>(.*)</hl><pl>(.*)</pl>");
        const std::string formate = "H1 = $1 and P1 = $2";
        std::string str;
        while(true)
        {
            if(!std::getline(std::cin,str) || str == "q")
            {
                break;
            }else
            {
                std::string result = std::regex_replace(str,r,formate,std::regex_constants::format_no_copy);
                std::cout << result << std::endl;
            }
            
        }
        return 0;

    输入:

    <body><hl>Header</hl><pl>Some text</pl></body>

    输出:

    H1 = Header and P1 = Some text

    这就是两者的差别;

  • 相关阅读:
    HDU 1560 DNA sequence (迭代加深搜索)
    POJ-1077 HDU 1043 HDU 3567 Eight (BFS预处理+康拓展开)
    CSUST 1011 神秘群岛 (Dijkstra+LCA)
    LCA 倍增
    HDU 1003 Max Sum 求区间最大值 (尺取法)
    Codeforce 867 C. Ordering Pizza (思维题)
    POJ 3349 Snowflake Snow Snowflakes (Hash)
    POJ 2774 Long Long Message (Hash + 二分)
    POJ 1200 Crazy Search (Hash)
    前端面试总结(转)
  • 原文地址:https://www.cnblogs.com/boost/p/10426496.html
Copyright © 2020-2023  润新知