Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      Regular expressions library(since C++11)

      From cppreference.com
      <cpp
       
       
       
      Regular expressions library
      Classes
      (C++11)
      Algorithms
      Iterators
      Exceptions
      Traits
      Constants
      (C++11)
      Regex Grammar
       

      The regular expressions library provides a class that representsregular expressions, which are a kind of mini-language used to perform pattern matching within strings. Almost all operations with regexes can be characterized by operating on several of the following objects:

      • Target sequence. The character sequence that is searched for a pattern. This may be a range specified by two iterators, a null-terminated character string or astd::string.
      • Pattern. This is the regular expression itself. It determines what constitutes a match. It is an object of typestd::basic_regex, constructed from a string with specialgrammar.
      • Matched array. The information about matches may be retrieved as an object of typestd::match_results.
      • Replacement string. This is a string that determines how to replace the matches.

      Contents

      [edit]Regular expression grammars

      Patterns and replacement strings support the following regular expression grammars:

      • Modified ECMAScript regular expression grammar. This is the default grammar.
      • Basic POSIX regular expression grammar.
      • Extended POSIX regular expression grammar.
      • The regular expression grammar used by theawk utility in POSIX.
      • The regular expression grammar used by thegrep utility in POSIX. This is effectively the same as the basic POSIX regular expression grammar, with the addition of newline'\n' as an alternation separator.
      • The regular expression grammar used by thegrep utility, with the-E option, in POSIX. This is effectively the same as the extended POSIX regular expression grammar, with the addition of newline'\n' as an alternation separator in addition to'|'.

      Some grammar variations (such as case-insensitive matching) are also avaliable, seethis page for details.

      [edit]Main classes

      These classes encapsulate a regular expression and the results of matching a regular expression within a target sequence of characters.

      regular expression object
      (class template)[edit]
      (C++11)
      identifies the sequence of characters matched by a sub-expression
      (class template)[edit]
      identifies one regular expression match, including all sub-expression matches
      (class template)[edit]

      [edit]Algorithms

      These functions are used to apply the regular expression encapsulated in a regex to a target sequence of characters.

      attempts to match a regular expression to an entire character sequence
      (function template)[edit]
      attempts to match a regular expression to any part of a character sequence
      (function template)[edit]
      replaces occurrences of a regular expression with formatted replacement text
      (function template)[edit]

      [edit]Iterators

      The regex iterators are used to traverse the entire set of regular expression matches found within a sequence.

      iterates through all regex matches within a character sequence
      (class template)[edit]
      iterates through the specified sub-expressions within all regex matches in a given string or through unmatched substrings
      (class template)[edit]

      [edit]Exceptions

      This class defines the type of objects thrown as exceptions to report errors from the regular expressions library.

      reports errors generated by the regular expressions library
      (class)[edit]

      [edit]Traits

      The regex traits class is used to encapsulate the localizable aspects of a regex.

      provides metainformation about a character type, required by the regex library
      (class template)[edit]

      [edit]Constants

      Defined in namespacestd::regex_constants
      general options controlling regex behavior
      (typedef)[edit]
      options specific to matching
      (typedef)[edit]
      (C++11)
      describes different types of matching errors
      (typedef)[edit]

      [edit]Example

      Run this code
      #include <iostream>#include <iterator>#include <regex>#include <string> int main(){std::string s="Some people, when confronted with a problem, think ""\"I know, I'll use regular expressions.\" ""Now they have two problems."; std::regex self_regex("REGULAR EXPRESSIONS",std::regex_constants::ECMAScript|std::regex_constants::icase);if(std::regex_search(s, self_regex))std::cout<<"Text contains the phrase 'regular expressions'\n"; std::regex word_regex("(\\w+)");auto words_begin=std::sregex_iterator(s.begin(), s.end(), word_regex);auto words_end=std::sregex_iterator(); std::cout<<"Found "<<std::distance(words_begin, words_end)<<" words\n"; constint N=6;std::cout<<"Words longer than "<< N<<" characters:\n";for(std::sregex_iterator i= words_begin; i!= words_end;++i){std::smatch match=*i;std::string match_str= match.str();if(match_str.size()> N)std::cout<<"  "<< match_str<<'\n';} std::regex long_word_regex("(\\w{7,})");std::string new_s=std::regex_replace(s, long_word_regex,"[$&]");std::cout<< new_s<<'\n';}

      Output:

      Text contains the phrase 'regular expressions'Found 20 wordsWords longer than 6 characters:  confronted  problem  regular  expressions  problemsSome people, when [confronted] with a [problem], think "I know, I'll use [regular] [expressions]." Now they have two [problems].
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/regex&oldid=172322"

      [8]ページ先頭

      ©2009-2025 Movatter.jp