Difference between revisions of "cpp/regex/match results"
(warning about invalidation of iterators) |
m (Shorten template names. Use {{lc}} where appropriate.) |
||
Line 8: | Line 8: | ||
}} | }} | ||
− | The class template {{ | + | The class template {{|std::match_results}} holds a collection of character sequences that represent the result of a regular expression match. |
− | This is a specialized allocator-aware container. It can only be default created, obtained from {{ | + | This is a specialized allocator-aware container. It can only be default created, obtained from {{|std::regex_iterator}}, or modified by {{|std::regex_search}} or {{|std::regex_match}}. Because {{tt|std::match_results}} holds {{|std::sub_match}}es, each of which is a pair of iterators into the original character sequence that was matched, it's undefined behavior to examine {{tt|std::match_results}} if the original character sequence was destroyed or iterators to it were invalidated for other reasons. |
The first sub_match (index 0) contained in a match_result always represents the full match within a target sequence made by a regex, and subsequent sub_matches represent sub-expression matches corresponding in sequence to the left parenthesis delimiting the sub-expression in the regex. | The first sub_match (index 0) contained in a match_result always represents the full match within a target sequence made by a regex, and subsequent sub_matches represent sub-expression matches corresponding in sequence to the left parenthesis delimiting the sub-expression in the regex. | ||
===Type requirements=== | ===Type requirements=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{req concept | BidirIt | BidirectionalIterator}} |
− | {{ | + | {{req concept | Alloc | Allocator}} |
− | {{ | + | {{end}} |
===Specializations=== | ===Specializations=== | ||
Several specializations for common character sequence types are provided: | Several specializations for common character sequence types are provided: | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{header | regex}} |
− | {{ | + | {{hitem | Type | Definition}} |
− | {{ | + | {{| {{tt|cmatch}} | {{c|match_results<const char*>}}}} |
− | {{ | + | {{| {{tt|wcmatch}} | {{c|match_results<const wchar_t*>}}}} |
− | {{ | + | {{| {{tt|smatch}} | {{c|match_results<std::string::const_iterator>}}}} |
− | {{ | + | {{| {{tt|wsmatch}} | {{c|match_results<std::wstring::const_iterator>}}}} |
− | {{ | + | {{end}} |
===Member types=== | ===Member types=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{hitem | Member type | Definition}} |
− | {{ | + | {{| {{tt|allocator_type}} | {{c|Allocator}}}} |
− | {{ | + | {{| {{tt|value_type}} | {{c|std::sub_match<BidirIt>}}}} |
− | {{ | + | {{| {{tt|const_reference}} | {{c|const value_type&}}}} |
− | {{ | + | {{| {{tt|reference}} | {{c|const_reference}}}} |
− | {{ | + | {{| {{tt|const_iterator}} | ''implementation defined'' (depends on the underlying container)}} |
− | {{ | + | {{| {{tt|iterator}} | {{c|const_iterator}}}} |
− | {{ | + | {{| {{tt|difference_type}} | {{c|std::iterator_traits<BidirIt>::difference_type}}}} |
− | {{ | + | {{| {{tt|size_type}} | {{c|std::allocator_traits<Alloc>::size_type}}}} |
− | {{ | + | {{| {{tt|char_type}} | {{c|std::iterator_traits<BidirIt>::value_type}}}} |
− | {{ | + | {{| {{tt|string_type}} | {{c|std::basic_string<char_type>}}}} |
− | {{ | + | {{end}} |
===Member functions=== | ===Member functions=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list constructor}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list destructor}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list operator{{=}}}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list get_allocator}} |
− | {{ | + | {{h2 | State}} |
− | {{ | + | {{mem fun | cpp/regex/match_results/ready | }} |
− | {{ | + | {{h2 | Size}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list empty}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list size}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list max_size}} |
− | {{ | + | {{h2 | Element access}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list length}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list position}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list str}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list operator_at}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list prefix}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list suffix}} |
− | {{ | + | {{h2 | Iterators}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list begin}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list end}} |
− | {{ | + | {{h2 | Format}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list format}} |
− | {{ | + | {{h2 | Modifiers}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list swap}} |
− | {{ | + | {{end}} |
===Non-member functions=== | ===Non-member functions=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list operator_cmp}} |
− | {{ | + | {{| cpp/regex/match_results/dcl list swap2}} |
− | {{ | + | {{end}} |
[[de:cpp/regex/match results]] | [[de:cpp/regex/match results]] |
Revision as of 20:51, 31 May 2013
Defined in header <regex>
|
||
template< class BidirIt, |
(since C++11) | |
The class template std::match_results holds a collection of character sequences that represent the result of a regular expression match.
This is a specialized allocator-aware container. It can only be default created, obtained from std::regex_iterator, or modified by std::regex_search or std::regex_match. Because std::match_results
holds std::sub_matches, each of which is a pair of iterators into the original character sequence that was matched, it's undefined behavior to examine std::match_results
if the original character sequence was destroyed or iterators to it were invalidated for other reasons.
The first sub_match (index 0) contained in a match_result always represents the full match within a target sequence made by a regex, and subsequent sub_matches represent sub-expression matches corresponding in sequence to the left parenthesis delimiting the sub-expression in the regex.
Contents |
Type requirements
Specializations
Several specializations for common character sequence types are provided:
Defined in header
<regex> | |
Type | Definition |
cmatch
|
match_results<const char*> |
wcmatch
|
match_results<const wchar_t*> |
smatch
|
match_results<std::string::const_iterator> |
wsmatch
|
match_results<std::wstring::const_iterator> |
Member types
Member type | Definition |
allocator_type
|
Allocator |
value_type
|
std::sub_match<BidirIt> |
const_reference
|
const value_type& |
reference
|
const_reference |
const_iterator
|
implementation defined (depends on the underlying container) |
iterator
|
const_iterator |
difference_type
|
std::iterator_traits<BidirIt>::difference_type |
size_type
|
std::allocator_traits<Alloc>::size_type |
char_type
|
std::iterator_traits<BidirIt>::value_type |
string_type
|
std::basic_string<char_type> |