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