Namespaces
Variants

Standard library header <regex> (C++11)

From cppreference.net
Standard library headers

Cet en-tête fait partie de la bibliothèque de traitement de texte .

Table des matières

Inclusions

(C++20)
Opérateur de comparaison à trois voies support
std::initializer_list modèle de classe

Classes

objet d'expression régulière
(modèle de classe)
std::regex std:: basic_regex < char > (typedef)
std::wregex std:: basic_regex < wchar_t > (typedef)
(C++11)
identifie la séquence de caractères correspondant à une sous-expression
(modèle de classe)
std::csub_match std:: sub_match < const char * > (typedef)
std::wcsub_match std:: sub_match < const wchar_t * > (typedef)
std::ssub_match std:: sub_match < std :: string :: const_iterator > (typedef)
std::wssub_match std:: sub_match < std :: wstring :: const_iterator > (typedef)
identifie une correspondance d'expression régulière, incluant toutes les correspondances de sous-expressions
(modèle de classe)
std::cmatch std:: match_results < const char * > (typedef)
std::wcmatch std:: match_results < const wchar_t * > (typedef)
std::smatch std:: match_results < std :: string :: const_iterator > (typedef)
std::wsmatch std:: match_results < std :: wstring :: const_iterator > (typedef)
itère à travers toutes les correspondances d'expressions rationnelles dans une séquence de caractères
(modèle de classe)
std::cregex_iterator std:: regex_iterator < const char * > (typedef)
std::wcregex_iterator std:: regex_iterator < const wchar_t * > (typedef)
std::sregex_iterator std:: regex_iterator < std :: string :: const_iterator > (typedef)
std::wsregex_iterator std:: regex_iterator < std :: wstring :: const_iterator > (typedef)
itère à travers les sous-expressions spécifiées dans toutes les correspondances d'expressions rationnelles dans une chaîne donnée ou à travers les sous-chaînes non correspondantes
(modèle de classe)
std::cregex_token_iterator std:: regex_token_iterator < const char * > (typedef)
std::wcregex_token_iterator std:: regex_token_iterator < const wchar_t * > (typedef)
std::sregex_token_iterator std:: regex_token_iterator < std :: string :: const_iterator > (typedef)
std::wsregex_token_iterator std:: regex_token_iterator < std :: wstring :: const_iterator > (typedef)
signale les erreurs générées par la bibliothèque d'expressions régulières
(classe)
fournit des métadonnées sur un type de caractère, requises par la bibliothèque regex
(modèle de classe)
types de constantes regex
Défini dans l'espace de noms std::regex_constants
options générales contrôlant le comportement des expressions rationnelles
(typedef)
options spécifiques à la correspondance
(typedef)
(C++11)
décrit les différents types d'erreurs de correspondance
(typedef)

Fonctions

Algorithme
tente de faire correspondre une expression régulière à une séquence de caractères entière
(fonction template)
tente de faire correspondre une expression régulière à n'importe quelle partie d'une séquence de caractères
(modèle de fonction)
remplace les occurrences d'une expression régulière par un texte de remplacement formaté
(modèle de fonction)
Opérations non-membres
spécialise l'algorithme std::swap
(modèle de fonction)
(supprimé en C++20) (supprimé en C++20) (supprimé en C++20) (supprimé en C++20) (supprimé en C++20) (C++20)
compare un sub_match avec un autre sub_match , une chaîne ou un caractère
(modèle de fonction)
affiche la sous-séquence de caractères correspondante
(modèle de fonction)
(supprimé en C++20)
compare lexicographiquement les valeurs dans les deux résultats de correspondance
(modèle de fonction)
spécialise l'algorithme std::swap
(modèle de fonction)
Accès aux plages
(C++11) (C++14)
retourne un itérateur vers le début d'un conteneur ou d'un tableau
(fonction template)
(C++11) (C++14)
retourne un itérateur vers la fin d'un conteneur ou d'un tableau
(modèle de fonction)
retourne un itérateur inverse vers le début d'un conteneur ou d'un tableau
(fonction template)
(C++14)
retourne un itérateur de fin inverse pour un conteneur ou un tableau
(modèle de fonction)
(C++17) (C++20)
renvoie la taille d'un conteneur ou d'un tableau
(modèle de fonction)
(C++17)
vérifie si le conteneur est vide
(modèle de fonction)
(C++17)
obtient le pointeur vers le tableau sous-jacent
(fonction template)

Synopsis

#include <compare>
#include <initializer_list>
namespace std {
  // constantes regex
  namespace regex_constants {
    using syntax_option_type = /*T1*/;
    using match_flag_type = /*T2*/;
    using error_type = /*T3*/;
  }
  // classe regex_error
  class regex_error;
  // modèle de classe regex_traits
  template<class CharT> struct regex_traits;
  // modèle de classe basic_regex
  template<class CharT, class Traits = regex_traits<CharT>> class basic_regex;
  using regex  = basic_regex<char>;
  using wregex = basic_regex<wchar_t>;
  // échange de basic_regex
  template<class CharT, class Traits>
    void swap(basic_regex<CharT, Traits>& e1, basic_regex<CharT, Traits>& e2);
  // modèle de classe sub_match
  template<class BiIt>
    class sub_match;
  using csub_match  = sub_match<const char*>;
  using wcsub_match = sub_match<const wchar_t*>;
  using ssub_match  = sub_match<string::const_iterator>;
  using wssub_match = sub_match<wstring::const_iterator>;
  // Opérateurs non membres de sub_match
  template<class BiIt>
    bool operator==(const sub_match<BiIt>& lhs, const sub_match<BiIt>& rhs);
  template<class BiIt>
    auto operator<=>(const sub_match<BiIt>& lhs, const sub_match<BiIt>& rhs);
  template<class BiIt, class ST, class SA>
    bool operator==(
      const sub_match<BiIt>& lhs,
      const basic_string<typename iterator_traits<BiIt>::value_type, ST, SA>& rhs);
  template<class BiIt, class ST, class SA>
    auto operator<=>(
      const sub_match<BiIt>& lhs,
      const basic_string<typename iterator_traits<BiIt>::value_type, ST, SA>& rhs);
  template<class BiIt>
    bool operator==(const sub_match<BiIt>& lhs,
                    const typename iterator_traits<BiIt>::value_type* rhs);
  template<class BiIt>
    auto operator<=>(const sub_match<BiIt>& lhs,
                     const typename iterator_traits<BiIt>::value_type* rhs);
  template<class BiIt>
    bool operator==(const sub_match<BiIt>& lhs,
                    const typename iterator_traits<BiIt>::value_type& rhs);
  template<class BiIt>
    auto operator<=>(const sub_match<BiIt>& lhs,
                     const typename iterator_traits<BiIt>::value_type& rhs);
  template<class CharT, class ST, class BiIt>
    basic_ostream<CharT, ST>&
      operator<<(basic_ostream<CharT, ST>& os, const sub_match<BiIt>& m);
  // modèle de classe match_results
  template<class BiIt,
           class Allocator = allocator<sub_match<BiIt>>>
    class match_results;
  using cmatch  = match_results<const char*>;
  using wcmatch = match_results<const wchar_t*>;
  using smatch  = match_results<string::const_iterator>;
  using wsmatch = match_results<wstring::const_iterator>;
  // Comparaisons de match_results
  template<class BiIt, class Allocator>
    bool operator==(const match_results<BiIt, Allocator>& m1,
                    const match_results<BiIt, Allocator>& m2);
  // échange de match_results
  template<class BiIt, class Allocator>
    void swap(match_results<BiIt, Allocator>& m1, match_results<BiIt, Allocator>& m2);
  // fonction template regex_match
  template<class BiIt, class Allocator, class CharT, class Traits>
    bool regex_match(BiIt first, BiIt last,
                     match_results<BiIt, Allocator>& m,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  template<class BiIt, class CharT, class Traits>
    bool regex_match(BiIt first, BiIt last,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  template<class CharT, class Allocator, class Traits>
    bool regex_match(const CharT* str, match_results<const CharT*, Allocator>& m,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  template<class ST, class SA, class Allocator, class CharT, class Traits>
    bool regex_match(const basic_string<CharT, ST, SA>& s,
                     match_results<typename basic_string<CharT, ST, SA>::const_iterator,
                                   Allocator>& m,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  template<class ST, class SA, class Allocator, class CharT, class Traits>
    bool regex_match(const basic_string<CharT, ST, SA>&&,
                     match_results<typename basic_string<CharT, ST, SA>::const_iterator,
                                   Allocator>&,
                     const basic_regex<CharT, Traits>&,
                     regex_constants::match_flag_type =
                       regex_constants::match_default) = delete;
  template<class CharT, class Traits>
    bool regex_match(const CharT* str,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  template<class ST, class SA, class CharT, class Traits>
    bool regex_match(const basic_string<CharT, ST, SA>& s,
                     const basic_regex<CharT, Traits>& e,
                     regex_constants::match_flag_type flags =
                       regex_constants::match_default);
  // modèle de fonction regex_search
  template<class BiIt, class Allocator, class CharT, class Traits>
    bool regex_search(BiIt first, BiIt last,
                      match_results<BiIt, Allocator>& m,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class BiIt, class CharT, class Traits>
    bool regex_search(BiItfirst, BiIt last,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class CharT, class Allocator, class Traits>
    bool regex_search(const CharT* str,
                      match_results<const CharT*, Allocator>& m,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class CharT, class Traits>
    bool regex_search(const CharT* str,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class ST, class SA, class CharT, class Traits>
    bool regex_search(const basic_string<CharT, ST, SA>& s,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class ST, class SA, class Allocator, class CharT, class Traits>
    bool regex_search(const basic_string<CharT, ST, SA>& s,
                      match_results<typename basic_string<CharT, ST, SA>::const_iterator,
                                    Allocator>& m,
                      const basic_regex<CharT, Traits>& e,
                      regex_constants::match_flag_type flags =
                        regex_constants::match_default);
  template<class ST, class SA, class Allocator, class CharT, class Traits>
    bool regex_search(const basic_string<CharT, ST, SA>&&,
                      match_results<typename basic_string<CharT, ST, SA>::const_iterator,
                                    Allocator>&,
                      const basic_regex<CharT, Traits>&,
                      regex_constants::match_flag_type
                        = regex_constants::match_default) = delete;
  // fonction template regex_replace
  template<class OutputIt, class BiIt,
            class Traits, class CharT, class ST, class SA>
    OutputIt
      regex_replace(OutputIt out,
                    BiIt first, BiIt last,
                    const basic_regex<CharT, Traits>& e,
                    const basic_string<CharT, ST, SA>& fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  template<class OutputIt, class BiIt, class Traits, class CharT>
    OutputIt
      regex_replace(OutputIt out,
                    BiIt first, BiIt last,
                    const basic_regex<CharT, Traits>& e,
                    const CharT* fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  template<class Traits, class CharT, class ST, class SA, class FST, class FSA>
    basic_string<CharT, ST, SA>
      regex_replace(const basic_string<CharT, ST, SA>& s,
                    const basic_regex<CharT, Traits>& e,
                    const basic_string<CharT, FST, FSA>& fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  template<class Traits, class CharT, class ST, class SA>
    basic_string<CharT, ST, SA>
      regex_replace(const basic_string<CharT, ST, SA>& s,
                    const basic_regex<CharT, Traits>& e,
                    const CharT* fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  template<class Traits, class CharT, class ST, class SA>
    basic_string<CharT>
      regex_replace(const CharT* s,
                    const basic_regex<CharT, Traits>& e,
                    const basic_string<CharT, ST, SA>& fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  template<class Traits, class CharT>
    basic_string<CharT>
      regex_replace(const CharT* s,
                    const basic_regex<CharT, Traits>& e,
                    const CharT* fmt,
                    regex_constants::match_flag_type flags =
                      regex_constants::match_default);
  // modèle de classe regex_iterator
  template<class BiIt,
            class CharT = typename iterator_traits<BiIt>::value_type,
            class Traits = regex_traits<CharT>>
    class regex_iterator;
  using cregex_iterator  = regex_iterator<const char*>;
  using wcregex_iterator = regex_iterator<const wchar_t*>;
  using sregex_iterator  = regex_iterator<string::const_iterator>;
  using wsregex_iterator = regex_iterator<wstring::const_iterator>;
  // class template regex_token_iterator
  template<class BiIt,
            class CharT = typename iterator_traits<BiIt>::value_type,
            class Traits = regex_traits<CharT>>
    class regex_token_iterator;
  using cregex_token_iterator  = regex_token_iterator<const char*>;
  using wcregex_token_iterator = regex_token_iterator<const wchar_t*>;
  using sregex_token_iterator  = regex_token_iterator<string::const_iterator>;
  using wsregex_token_iterator = regex_token_iterator<wstring::const_iterator>;
  namespace pmr {
    template<class BiIt>
      using match_results =
        std::match_results<BiIt, polymorphic_allocator<sub_match<BiIt>>>;
    using cmatch  = match_results<const char*>;
    using wcmatch = match_results<const wchar_t*>;
    using smatch  = match_results<string::const_iterator>;
    using wsmatch = match_results<wstring::const_iterator>;
  }
}

Type masque de bits std::regex_constants::syntax_option_type

namespace std::regex_constants {
  using syntax_option_type = /*T1*/;
  inline constexpr syntax_option_type icase = /* non spécifié */;
  inline constexpr syntax_option_type nosubs = /* non spécifié */;
  inline constexpr syntax_option_type optimize = /* non spécifié */;
  inline constexpr syntax_option_type collate = /* non spécifié */;
  inline constexpr syntax_option_type ECMAScript = /* non spécifié */;
  inline constexpr syntax_option_type basic = /* non spécifié */;
  inline constexpr syntax_option_type extended = /* non spécifié */;
  inline constexpr syntax_option_type awk = /* non spécifié */;
  inline constexpr syntax_option_type grep = /* non spécifié */;
  inline constexpr syntax_option_type egrep = /* non spécifié */;
  inline constexpr syntax_option_type multiline = /* non spécifié */;
}

Type masque de bits std::regex_constants::match_flag_type

namespace std::regex_constants {
  using match_flag_type = /*T2*/;
  inline constexpr match_flag_type match_default = {};
  inline constexpr match_flag_type match_not_bol = /* unspecified */;
  inline constexpr match_flag_type match_not_eol = /* unspecified */;
  inline constexpr match_flag_type match_not_bow = /* unspecified */;
  inline constexpr match_flag_type match_not_eow = /* unspecified */;
  inline constexpr match_flag_type match_any = /* unspecified */;
  inline constexpr match_flag_type match_not_null = /* unspecified */;
  inline constexpr match_flag_type match_continuous = /* unspecified */;
  inline constexpr match_flag_type match_prev_avail = /* unspecified */;
  inline constexpr match_flag_type format_default = {};
  inline constexpr match_flag_type format_sed = /* unspecified */;
  inline constexpr match_flag_type format_no_copy = /* unspecified */;
  inline constexpr match_flag_type format_first_only = /* unspecified */;
}

Type énuméré std::regex_constants::error_type

namespace std::regex_constants {
  using error_type = /*T3*/;
  inline constexpr error_type error_collate = /* non spécifié */;
  inline constexpr error_type error_ctype = /* non spécifié */;
  inline constexpr error_type error_escape = /* non spécifié */;
  inline constexpr error_type error_backref = /* non spécifié */;
  inline constexpr error_type error_brack = /* non spécifié */;
  inline constexpr error_type error_paren = /* non spécifié */;
  inline constexpr error_type error_brace = /* non spécifié */;
  inline constexpr error_type error_badbrace = /* non spécifié */;
  inline constexpr error_type error_range = /* non spécifié */;
  inline constexpr error_type error_space = /* non spécifié */;
  inline constexpr error_type error_badrepeat = /* non spécifié */;
  inline constexpr error_type error_complexity = /* non spécifié */;
  inline constexpr error_type error_stack = /* non spécifié */;
}

Classe std::regex_error

namespace std {
  class regex_error : public runtime_error {
  public:
    explicit regex_error(regex_constants::error_type ecode);
    regex_constants::error_type code() const;
  };
}
**Note:** Le code C++ n'a pas été traduit conformément aux instructions, car il se trouve dans des balises `
` et contient des termes spécifiques au C++ qui doivent être préservés. Seul le texte environnant (s'il y en avait) aurait été traduit en français.

Modèle de classe std::regex_traits

namespace std {
  template<class CharT>
    struct regex_traits {
      using char_type       = CharT;
      using string_type     = basic_string<char_type>;
      using locale_type     = locale;
      using char_class_type = /* type masque de bits */;
      regex_traits();
      static size_t length(const char_type* p);
      CharT translate(CharT c) const;
      CharT translate_nocase(CharT c) const;
      template<class ForwardIt>
        string_type transform(ForwardIt first, ForwardIt last) const;
      template<class ForwardIt>
        string_type transform_primary(ForwardIt first, ForwardIt last) const;
      template<class ForwardIt>
        string_type lookup_collatename(ForwardIt first, ForwardIt last) const;
      template<class ForwardIt>
        char_class_type lookup_classname(ForwardIt first, ForwardIt last,
                                         bool icase = false) const;
      bool isctype(CharT c, char_class_type f) const;
      int value(CharT ch, int radix) const;
      locale_type imbue(locale_type l);
      locale_type getloc() const;
    };
}

Modèle de classe std::basic_regex

namespace std {
  template<class CharT, class Traits = regex_traits<CharT>>
    class basic_regex {
    public:
      // types
      using value_type  =          CharT;
      using Traits_type =          Traits;
      using string_type = typename Traits::string_type;
      using flag_type   =          regex_constants::syntax_option_type;
      using locale_type = typename Traits::locale_type;
      // constantes
      static constexpr flag_type icase = regex_constants::icase;
      static constexpr flag_type nosubs = regex_constants::nosubs;
      static constexpr flag_type optimize = regex_constants::optimiser;
      static constexpr flag_type collate = regex_constants::collationner;
      static constexpr flag_type ECMAScript = regex_constants::ECMAScript;
      static constexpr flag_type basic = regex_constants::basic;
      static constexpr flag_type extended = regex_constants::étendu;
      static constexpr flag_type awk = regex_constants::awk;
      static constexpr flag_type grep = regex_constants::grep;
      static constexpr flag_type egrep = regex_constants::egrep;
      static constexpr flag_type multiline = regex_constants::multiligne;
      // construction/copie/destruction
      basic_regex();
      explicit basic_regex(const CharT* p, flag_type f = regex_constants::ECMAScript);
      basic_regex(const CharT* p, size_t len, flag_type f = regex_constants::ECMAScript);
      basic_regex(const basic_regex&);
      basic_regex(basic_regex&&) noexcept;
      template<class ST, class SA>
        explicit basic_regex(const basic_string<CharT, ST, SA>& s,
                             flag_type f = regex_constants::ECMAScript);
      template<class ForwardIt>
        basic_regex(ForwardIt first, ForwardIt last,
                    flag_type f = regex_constants::ECMAScript);
      basic_regex(initializer_list<CharT> il, flag_type f = regex_constants::ECMAScript);
      ~basic_regex();
      // assign
      basic_regex& operator=(const basic_regex& e);
      basic_regex& operator=(basic_regex&& e) noexcept;
      basic_regex& operator=(const CharT* p);
      basic_regex& operator=(initializer_list<CharT> il);
      template<class ST, class SA>
        basic_regex& operator=(const basic_string<CharT, ST, SA>& s);
      basic_regex& assign(const basic_regex& e);
      basic_regex& assign(basic_regex&& e) noexcept;
      basic_regex& assign(const CharT* p, flag_type f = regex_constants::ECMAScript);
      basic_regex& assign(const CharT* p, size_t len,
                          flag_type f = regex_constants::ECMAScript);
      template<class ST, class SA>
        basic_regex& assign(const basic_string<CharT, ST, SA>& s,
                            flag_type f = regex_constants::ECMAScript);
      template<class InputIt>
        basic_regex& assign(InputIt first, InputIt last,
                            flag_type f = regex_constants::ECMAScript);
      basic_regex& assign(initializer_list<CharT>,
                          flag_type f = regex_constants::ECMAScript);
      // opérations const
      unsigned mark_count() const;
      flag_type flags() const;
      // locale
      locale_type imbue(locale_type loc);
      locale_type getloc() const;
      // échanger
      void swap(basic_regex&);
    };
  template<class ForwardIt>
    basic_regex(ForwardIt, ForwardIt,
                regex_constants::syntax_option_type = regex_constants::ECMAScript)
      -> basic_regex<typename iterator_traits<ForwardIt>::value_type>;
}

Modèle de classe std::sub_match

namespace std {
  template<class BiIt>
    class sub_match : public pair<BiIt, BiIt> {
    public:
      using value_type      = typename iterator_traits<BiIt>::value_type;
      using difference_type = typename iterator_traits<BiIt>::difference_type;
      using iterator        = BiIt;
      using string_type     = basic_string<value_type>;
      bool matched;
      constexpr sub_match();
      difference_type length() const;
      operator string_type() const;
      string_type str() const;
      int compare(const sub_match& s) const;
      int compare(const string_type& s) const;
      int compare(const value_type* s) const;
      void swap(sub_match& s) noexcept(/* voir description */);
    };
}
Seul le commentaire "/* see description */" a été traduit en "/* voir description */" car il s'agit du seul texte non technique dans le code. Tous les éléments C++ (mots-clés, noms de classes, types, etc.) ont été conservés en anglais conformément aux instructions.

Modèle de classe std::match_results

namespace std {
  template<class BiIt,
           class Allocator = allocator<sub_match<BiIt>>>
    class match_results {
    public:
      using value_type      = sub_match<BiIt>;
      using const_reference = const value_type&;
      using reference       = value_type&;
      using const_iterator  = /* implementation-defined */;
      using iterator        = const_iterator;
      using difference_type = typename iterator_traits<BiIt>::difference_type;
      using size_type       = typename allocator_traits<Allocator>::size_type;
      using allocator_type  = Allocator;
      using char_type       = typename iterator_traits<BiIt>::value_type;
      using string_type     = basic_string<char_type>;
      // construction/copie/destruction
      match_results() : match_results(Allocator()) {}
      explicit match_results(const Allocator& a);
      match_results(const match_results& m);
      match_results(const match_results& m, const Allocator& a);
      match_results(match_results&& m) noexcept;
      match_results(match_results&& m, const Allocator& a);
      match_results& operator=(const match_results& m);
      match_results& operator=(match_results&& m);
      ~match_results();
      // état
      bool ready() const;
      // taille
      size_type size() const;
      size_type max_size() const;
      bool empty() const;
      // accès aux éléments
      difference_type length(size_type sub = 0) const;
      difference_type position(size_type sub = 0) const;
      string_type str(size_type sub = 0) const;
      const_reference operator[](size_type n) const;
      const_reference prefix() const;
      const_reference suffix() const;
      const_iterator begin() const;
      const_iterator end() const;
      const_iterator cbegin() const;
      const_iterator cend() const;
      // formatage
      template<class OutputIt>
        OutputIt
          format(OutputIt out,
                 const char_type* fmt_first, const char_type* fmt_last,
                 regex_constants::match_flag_type flags =
                   regex_constants::format_default) const;
      template<class OutputIt, class ST, class SA>
        OutputIt
          format(OutputIt out,
                 const basic_string<char_type, ST, SA>& fmt,
                 regex_constants::match_flag_type flags =
                   regex_constants::format_default) const;
      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;
      string_type
        format(const char_type* fmt,
               regex_constants::match_flag_type flags =
                 regex_constants::format_default) const;
      // allocateur
      allocator_type get_allocator() const;
      // échange
      void swap(match_results& that);
    };
}