public member function
<regex>

std::match_results::format

(1)
 string_type format (const char_type* fmt,     regex_constants::match_flag_type flags = regex_constants::format_default ) const;
(2)
template <class sT, class sA>  basic_string<char_type, sT, sA> format (const basic_string<char_type, sT, sA>& fmt,    regex_constants::match_flag_type flags = regex_constants::format_default ) const;
(3)
template <class OutputIterator, class sT, class sA>  OutputIterator format ( OutputIterator out,    const basic_string<char_type, sT, sA>& fmt,    regex_constants::match_flag_type flags = regex_constants::format_default ) const;
(4)
template <class OutputIterator>  OuputIterator format ( OutputIterator out,    const char_type* fmt_first, const char_type* fmt_last,    regex_constants::match_flag_type flags = regex_constants::format_default ) const;
格式化替换字符串
版本(1)(2) 返回一个字符串对象,其中包含 fmt 的副本,该副本的格式说明符和转义序列已替换为它们所代表的字符。

版本 (3)(4) 执行相同的操作,但将结果字符序列存储在从 out 开始的范围内。

该函数使用 match_results 对象中的匹配项来替换引用它们的转义序列。

match_results 对象应为 ready,这发生在它作为适当的参数传递给 regex_matchregex_search 的调用之后。

参数

fmt
格式字符串。
这可能包括格式说明符和转义序列,它们被它们所代表的字符替换。 对于format_default, 可能的说明符是
字符替换内容
$nn个反向引用(即,正则表达式模式中使用括号指定的第n个匹配组的副本)。
n 必须是指定有效反向引用的整数值,大于 1,并且最多两位数。
$&整个匹配项的副本
$`前缀(即,目标序列中位于匹配项之前的部分)。
后缀(即,目标序列中位于匹配项之后的部分)。
$$单个$字符。
标志
用于解释格式字符串的标志。
可以将这些常量中的一个或多个组合(使用按位 OR 运算符 |)以形成类型为有效的位掩码值regex_constants::match_flag_type:
flag*对格式的影响说明
match_default默认format_default.
相同。 此常量的值为零**。
match_not_bol此函数忽略。
有关更多信息,请参见 regex_constants
match_not_eol
match_not_bow
match_not_eow
match_any
match_not_null
match_continuous
match_prev_avail
format_default默认格式使用标准格式规则来替换匹配项(ECMAScript 的 replace 方法使用的规则)。
相同。 此常量的值为零**。
format_sedsed 格式使用与 POSIX 中 sed 实用程序相同的规则来替换匹配项。
format_no_copy不复制替换匹配项时,不会复制目标序列中与正则表达式不匹配的部分。
format_first_only仅首次仅替换正则表达式的第一次出现。
* 这些位掩码标志名称在std::regex_constants命名空间下可用(有关更多详细信息,请参见 regex_constants)。
** 如果设置了其他标志,则值为零的常量将被忽略。
match_flag_typestd::regex_constants命名空间内定义。
下可用的类型
输出迭代器,指向存储结果字符串的字符序列。
fmt_first, fmt_last
包含格式字符串的字符序列上的范围。

返回值

对于 (1)(2),结果字符串作为 字符串 对象。
对于 (3)(4),该函数返回 out

string_type是一个成员类型,是与序列中使用的字符类型相对应的basic_string类型的别名(例如,对于cmatchsmatch).

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// match_results::format
// - using cmatch, a standard alias of match_results<const char*>
#include <iostream>
#include <regex>

int main ()
{
  std::cmatch m;

  std::regex_match ( "subject", m, std::regex("(sub)(.*)") );

  std::cout << m.format ("the expression matched [$0].\n");
  std::cout << m.format ("with sub-expressions [$1] and [$2].\n");

  return 0;
}

输出
the expression matched [subject].
with sub-expressions [sub] and [ject].



另见