regex_replace Function

replaces匹配正则表达式。

template<class OutIt, class BidIt, class RXtraits, class Alloc, class Elem>
    OutIt regex_replace(OutIt out,
        BidIt first, BidIt last,
        const basic_regex<Elem, RXtraits, Alloc>& re,
        const basic_string<Elem>& fmt,
        match_flag_type flags = match_default);
template<class RXtraits, class Alloc, class Elem>
    basic_string<Elem> regex_replace(const basic_string<Elem>& str,
        const basic_regex<Elem, RXtraits, Alloc>& re,
        const basic_string<Elem>& fmt,
        match_flag_type flags = match_default);

参数

  • OutIt
    替换的迭代器类型。

  • BidIt
    子匹配项的迭代器类型。

  • RXtraits
    元素的特征选件类。

  • Alloc
    正则表达式分配程序选件类。

  • Elem
    元素的类型要匹配的。

  • flags
    匹配的标志。

  • first
    序列开头要匹配的。

  • fmt
    替换的格式。

  • last
    序列的结尾要匹配的。

  • out
    输出迭代器。

  • re
    要匹配的正则表达式。

  • str
    匹配的字符串。

备注

第一个函数构造 regex_iterator Class 对象 iter(first, last, re, flags) 并使用该函数拆分其输入范围 [first, last) 转换为一系列此外 T0M0T1M1...TN-1MN-1TN,Mn 是迭代器检测的 nth 匹配。如果没有找到匹配项,T0 是整个输入范围,并 N 为零。如果只有第一个匹配项使用 (flags & format_first_only) != 0,T1 是遵循匹配的所有输入文本,因此,N 为1。对于范围 [0, N)的每 i,因此,如果 (flags & format_no_copy) == 0 它复制该范围内 Ti 的文本设置迭代器 out。然后调用 m.format(out, fmt, flags),m 是subsequence的 Mi迭代器对象返回的 match_results 对象 iter。最后,因此,如果 (flags & format_no_copy) == 0 它复制该范围内 TN 的文本设置迭代器 out。函数返回 out。

第二个构造函数局部变量 result 类型 basic_string<charT> 并调用 regex_replace(back_inserter(result), str.begin(), str.end(), re, fmt, flags)。它返回 result。

示例

 

// std_tr1__regex__regex_replace.cpp 
// compile with: /EHsc 
#include <regex> 
#include <iostream> 
 
int main() 
    { 
    char buf[20]; 
    const char *first = "axayaz"; 
    const char *last = first + strlen(first); 
    std::regex rx("a"); 
    std::string fmt("A"); 
    std::regex_constants::match_flag_type fonly = 
        std::regex_constants::format_first_only; 
 
    *std::regex_replace(&buf[0], first, last, rx, fmt) = '\0'; 
    std::cout << "replacement == " << &buf[0] << std::endl; 
 
    *std::regex_replace(&buf[0], first, last, rx, fmt, fonly) = '\0'; 
    std::cout << "replacement == " << &buf[0] << std::endl; 
 
    std::string str("adaeaf"); 
    std::cout << "replacement == " 
        << std::regex_replace(str, rx, fmt) << std::endl; 
 
    std::cout << "replacement == " 
        << std::regex_replace(str, rx, fmt, fonly) << std::endl; 
 
    return (0); 
    } 
 
  

要求

标头: <regex>

命名空间: std

请参见

参考

<regex>

regex_match Function

regex_search Function