zoukankan      html  css  js  c++  java
  • 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

    这就是两者的差别;

  • 相关阅读:
    接口详解
    可空类型
    初学泛型
    结构和类
    触发器
    学习C#异常处理机制
    静飘移
    《Hashtable(散列表)》 集合
    自定义集合类
    Automation伺服程式無法産生物件
  • 原文地址:https://www.cnblogs.com/boost/p/10426496.html
Copyright © 2011-2022 走看看