std::regex_match (3) - Linux Manuals
std::regex_match: std::regex_match
NAME
std::regex_match - std::regex_match
Synopsis
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, (1) (since C++11)
const std::basic_regex<CharT,Traits>& e,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class BidirIt,
class CharT, class Traits >
bool regex_match( BidirIt first, BidirIt last, (2) (since C++11)
const std::basic_regex<CharT,Traits>& e,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class CharT, class Alloc, class Traits >
bool regex_match( const CharT* str,
std::match_results<const CharT*,Alloc>& m, (3) (since C++11)
const std::basic_regex<CharT,Traits>& e,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class STraits, class SAlloc,
class Alloc, class CharT, class Traits >
bool regex_match( const std::basic_string<CharT,STraits,SAlloc>& s,
std::match_results<
typename std::basic_string<CharT,STraits,SAlloc>::const_iterator, (4) (since C++11)
Alloc
>& m,
const std::basic_regex<CharT,Traits>& e,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class CharT, class Traits >
bool regex_match( const CharT* str,
const std::basic_regex<CharT,Traits>& e, (5) (since C++11)
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class STraits, class SAlloc,
class CharT, class Traits >
bool regex_match( const std::basic_string<CharT, STraits, SAlloc>& s, (6) (since C++11)
const std::basic_regex<CharT,Traits>& e,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default );
template< class STraits, class SAlloc,
class Alloc, class CharT, class Traits >
bool regex_match( const std::basic_string<CharT,STraits,SAlloc>&&,
std::match_results<
typename std::basic_string<CharT,STraits,SAlloc>::const_iterator, (7) (since C++14)
Alloc
>&,
const std::basic_regex<CharT,Traits>&,
std::regex_constants::match_flag_type flags =
std::regex_constants::match_default ) = delete;
Determines if the regular expression e matches the entire target character sequence, which may be specified as std::string, a C-string, or an iterator pair.
1) Determines if there is a match between the regular expression e and the entire target character sequence [first,last), taking into account the effect of flags. When determining if there is a match, only potential matches that match the entire character sequence are considered. Match results are returned in m.
2) Behaves as (1) above, omitting the match results.
3) Returns std::regex_match(str, str + std::char_traits<charT>::length(str), m, e, flags).
4) Returns std::regex_match(s.begin(), s.end(), m, e, flags).
5) Returns std::regex_match(str, str + std::char_traits<charT>::length(str), e, flags).
6) Returns std::regex_match(s.begin(), s.end(), e, flags).
7) The overload 4 is prohibited from accepting temporary strings, otherwise this function populates match_results m with string iterators that become invalid immediately.
Note that regex_match will only successfully match a regular expression to an entire character sequence, whereas std::regex_search will successfully match subsequences.
Parameters
first, last - the target character range to apply the regex to, given as iterators
m - the match results
str - the target string, given as a null-terminated C-style string
s - the target string, given as a std::basic_string
e - the regular expression
flags - flags used to determine how the match will be performed
Type requirements
-
BidirIt must meet the requirements of LegacyBidirectionalIterator.
Return value
Returns true if a match exists, false otherwise. In either case, the object m is updated, as follows:
If the match does not exist:
m.ready() == true
m.empty() == true
m.size() == 0
If the match exists:
m.ready() true
m.empty() false
m.size() number_of_marked_subexpressions plus 1, that is, 1+e.mark_count()
m.prefix().first first
m.prefix().second first
m.prefix().matched false (the match prefix is empty)
m.suffix().first last
m.suffix().second last
m.suffix().matched false (the match suffix is empty)
m[0].first first
m[0].second last
m[0].matched true (the entire sequence is matched)
m[n].first the start of the sequence that matched marked_sub-expression n, or last if the subexpression did not participate in the match
m[n].second the end of the sequence that matched marked_sub-expression n, or last if the subexpression did not participate in the match
m[n].matched true if sub-expression n participated in the match, false otherwise
Notes
Because regex_match only considers full matches, the same regex may give different matches between regex_match and std::regex_search:
Example
// Run this code