Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::regex_match

      From cppreference.com
      <cpp‎ |regex
       
       
       
      Regular expressions library
      Classes
      (C++11)
      Algorithms
      regex_match
      (C++11)
      Iterators
      Exceptions
      Traits
      Constants
      (C++11)
      Regex Grammar
       
      Defined in header<regex>
      template<class BidirIt,class Alloc,class CharT,class Traits>

      bool regex_match( BidirIt first, BidirIt last,
                       std::match_results<BidirIt, Alloc>& m,
                       conststd::basic_regex<CharT, Traits>& e,
                       std::regex_constants::match_flag_type flags=

                           std::regex_constants::match_default);
      (1)(since C++11)
      template<class BidirIt,class CharT,class Traits>

      bool regex_match( BidirIt first, BidirIt last,
                       conststd::basic_regex<CharT, Traits>& e,
                       std::regex_constants::match_flag_type flags=

                           std::regex_constants::match_default);
      (2)(since C++11)
      template<class CharT,class Alloc,class Traits>

      bool regex_match(const CharT* str,
                       std::match_results<const CharT*, Alloc>& m,
                       conststd::basic_regex<CharT, Traits>& e,
                       std::regex_constants::match_flag_type flags=

                           std::regex_constants::match_default);
      (3)(since C++11)
      template<class CharT,class Traits>

      bool regex_match(const CharT* str,conststd::basic_regex<CharT, Traits>& e,
                       std::regex_constants::match_flag_type flags=

                           std::regex_constants::match_default);
      (4)(since C++11)
      template<class STraits,class SAlloc,class Alloc,

               class CharT,class Traits>
      bool regex_match
         (conststd::basic_string<CharT, STraits, SAlloc>& s,
           std::match_results
               <typenamestd::basic_string<CharT, STraits, SAlloc>::const_iterator,
                 Alloc>& m,
           conststd::basic_regex<CharT, Traits>& e,
           std::regex_constants::match_flag_type flags=

               std::regex_constants::match_default);
      (5)(since C++11)
      template<class STraits,class SAlloc,class CharT,class Traits>

      bool regex_match(conststd::basic_string<CharT, STraits, SAlloc>& s,
                       conststd::basic_regex<CharT, Traits>& e,
                       std::regex_constants::match_flag_type flags=

                           std::regex_constants::match_default);
      (6)(since C++11)
      template<class STraits,class SAlloc,class Alloc,

               class CharT,class Traits>
      bool regex_match
         (conststd::basic_string<CharT, STraits, SAlloc>&&,
           std::match_results
               <typenamestd::basic_string<CharT, STraits, SAlloc>::const_iterator,
                 Alloc>&,
           conststd::basic_regex<CharT, Traits>&,
           std::regex_constants::match_flag_type flags=

               std::regex_constants::match_default)= delete;
      (7)(since C++11)

      Determines if the regular expressione matches the entire target character sequence. The detailed match result is stored inm (if present).

      1,2) The target character sequence is represented by the range[firstlast).

      IfBidirIt does not satisfy the requirements ofLegacyBidirectionalIterator, the behavior is undefined.

      (until C++23)

      IfBidirIt does not modelbidirectional_iterator, the behavior is undefined.

      (since C++23)
      3,4) The target character sequence is represented by the range[strstr+std::char_traits<CharT>::length(str)).
      5,6) The target character sequence is represented by the strings.
      7) The target character sequence cannot be represented by astd::string rvalue.

      If the match does not exist, the following expressions involvingm (if exists) should yield the specified values:

       Expression  Value 
      m.ready()true
      m.size()0
      m.empty()true

      If the match exists, given any integer in(0m.size()) asn, the following expressions involvingm should yield the specified values for each overload listed below:

            Expression      Value
                 Overload(1)                      Overload(3)                      Overload(5)           
      m.ready()true
      m.size()1+ e.mark_count()
      m.empty()false
      m.prefix().firstfirststrs.begin()
      m.prefix().second
      m.prefix().matched    false[1]
      m.suffix().firstlaststd::char_traits<CharT>::
          length(str)+ str
      s.end()
      m.suffix().second
      m.suffix().matched    false[2]
      m[0].firstfirststrs.begin()
      m[0].secondlaststd::char_traits<CharT>::
          length(str)+ str
      s.end()
      m[0].matched    true[3]
      m[n].first
      • last ifmarked sub-expressionn did not participate in the match
      • the start of the sequence otherwise matching sub-expressionn otherwise
      m[n].second
      • last ifmarked sub-expressionn did not participate in the match
      • the end of the sequence otherwise matching sub-expressionn otherwise
      m[n].matched
      1. The match prefix is empty.
      2. The match suffix is empty.
      3. The entire sequence is matched.

      Contents

      [edit]Parameters

      first, last - the target character range
      str - the target null-terminated C-style string
      s - the targetstd::basic_string
      m - the match results
      e - the regular expression
      flags - flags used to determine how the match will be performed

      [edit]Return value

      Returnstrue if the entire target sequence matchese,false otherwise.

      [edit]Notes

      Becauseregex_match only considers full matches, the same regex may give different matches betweenregex_match andstd::regex_search:

      std::regex re("Get|GetValue");std::cmatch m;std::regex_search("GetValue", m, re);// returns true, and m[0] contains "Get"std::regex_match("GetValue", m, re);// returns true, and m[0] contains "GetValue"std::regex_search("GetValues", m, re);// returns true, and m[0] contains "Get"std::regex_match("GetValues", m, re);// returns false

      [edit]Example

      Run this code
      #include <cstddef>#include <iostream>#include <regex>#include <string> int main(){// Simple regular expression matchingconststd::string fnames[]={"foo.txt","bar.txt","baz.dat","zoidberg"};conststd::regex txt_regex("[a-z]+\\.txt"); for(constauto& fname: fnames)std::cout<< fname<<": "<< std::regex_match(fname, txt_regex)<<'\n'; // Extraction of a sub-matchconststd::regex base_regex("([a-z]+)\\.txt");std::smatch base_match; for(constauto& fname: fnames)if(std::regex_match(fname, base_match, base_regex))// The first sub_match is the whole string; the next// sub_match is the first parenthesized expression.if(base_match.size()==2){std::ssub_match base_sub_match= base_match[1];std::string base= base_sub_match.str();std::cout<< fname<<" has a base of "<< base<<'\n';} // Extraction of several sub-matchesconststd::regex pieces_regex("([a-z]+)\\.([a-z]+)");std::smatch pieces_match; for(constauto& fname: fnames)if(std::regex_match(fname, pieces_match, pieces_regex)){std::cout<< fname<<'\n';for(std::size_t i=0; i< pieces_match.size();++i){std::ssub_match sub_match= pieces_match[i];std::string piece= sub_match.str();std::cout<<"  submatch "<< i<<": "<< piece<<'\n';}}}

      Output:

      foo.txt: 1bar.txt: 1baz.dat: 0zoidberg: 0foo.txt has a base of foobar.txt has a base of barfoo.txt  submatch 0: foo.txt  submatch 1: foo  submatch 2: txtbar.txt  submatch 0: bar.txt  submatch 1: bar  submatch 2: txtbaz.dat  submatch 0: baz.dat  submatch 1: baz  submatch 2: dat

      [edit]Defect reports

      The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

      DRApplied toBehavior as publishedCorrect behavior
      LWG 2205C++11n could be zero in the postconditioncan only be positive
      LWG 2273C++11it was unclear whether partial matches are consideredonly considers full matches
      LWG 2329C++11overload(5) acceptedbasic_string rvalues,
      which could result in dangling iterators
      rejected via deleted overload(7)

      [edit]See also

      regular expression object
      (class template)[edit]
      identifies one regular expression match, including all sub-expression matches
      (class template)[edit]
      attempts to match a regular expression to any part of a character sequence
      (function template)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/regex/regex_match&oldid=177664"

      [8]ページ先頭

      ©2009-2025 Movatter.jp