Difference between revisions of "cpp/regex/match results"
Andreas Krug (Talk | contribs) m (fmt) |
|||
(5 intermediate revisions by 3 users not shown) | |||
Line 3: | Line 3: | ||
{{dcl begin}} | {{dcl begin}} | ||
{{dcl header|regex}} | {{dcl header|regex}} | ||
− | {{dcl | num=1| since=c++11 | 1= | + | {{dcl|num=1|since=c++11|1= |
template< | template< | ||
class BidirIt, | class BidirIt, | ||
Line 11: | Line 11: | ||
{{dcl|num=2|since=c++17|1= | {{dcl|num=2|since=c++17|1= | ||
namespace pmr { | namespace pmr { | ||
− | template <class | + | template <class > |
using match_results = std::match_results<BidirIt, | using match_results = std::match_results<BidirIt, | ||
− | + | std::polymorphic_allocator< | |
+ | std::sub_match<BidirIt>>>; | ||
} | } | ||
}} | }} | ||
{{dcl end}} | {{dcl end}} | ||
− | 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. | + | This is a specialized allocator-aware container. It can only be default created, obtained from {{lc|std::regex_iterator}}, or modified by {{lc|std::regex_search}} or {{lc|std::regex_match}}. Because {{tt|std::match_results}} holds {{lc|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 {{ | + | The first {{|sub_match}} (index 0) contained in a {{tt|match_result}} always represents the full match within a target sequence made by a regex, and subsequent {{|sub_match}}es represent sub-expression matches corresponding in sequence to the left parenthesis delimiting the sub-expression in the regex. |
− | {{tt|std::match_results}} meets the requirements of a | + | {{tt|std::match_results}} meets the requirements of a {{|AllocatorAwareContainer}} and of a {{|SequenceContainer}}, except that the semantics of comparison functions are different from those required for a container. |
===Type requirements=== | ===Type requirements=== | ||
{{par begin}} | {{par begin}} | ||
− | {{par req | + | {{par req |BidirIt|BidirectionalIterator}} |
− | {{par req | + | {{par req |Alloc|Allocator}} |
{{par end}} | {{par end}} | ||
Line 36: | Line 37: | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc header | regex}} | + | {{dsc header|regex}} |
− | {{dsc hitem | Type | Definition}} | + | {{dsc hitem|Type|Definition}} |
− | {{dsc | {{tt|std::cmatch}} | {{c|std::match_results<const char*>}}}} | + | {{dsc|{{tt|std::cmatch}}|{{c|std::match_results<const char*>}}}} |
− | {{dsc | {{tt|std::wcmatch}} | {{c|std::match_results<const wchar_t*>}}}} | + | {{dsc|{{tt|std::wcmatch}}|{{c|std::match_results<const wchar_t*>}}}} |
− | {{dsc | {{tt|std::smatch}} | {{c|std::match_results<std::string::const_iterator>}}}} | + | {{dsc|{{tt|std::smatch}}|{{c|std::match_results<std::string::const_iterator>}}}} |
− | {{dsc | {{tt|std::wsmatch}} | {{c|std::match_results<std::wstring::const_iterator>}}}} | + | {{dsc|{{tt|std::wsmatch}}|{{c|std::match_results<std::wstring::const_iterator>}}}} |
− | {{dsc | {{tt|std::pmr::cmatch}} {{mark c++17}} | {{c|std::pmr::match_results<const char*>}}}} | + | {{dsc|{{tt|std::pmr::cmatch}} {{mark c++17}}|{{c|std::pmr::match_results<const char*>}}}} |
− | {{dsc | {{tt|std::pmr::wcmatch}} {{mark c++17}}| {{c|std::pmr::match_results<const wchar_t*>}}}} | + | {{dsc|{{tt|std::pmr::wcmatch}} {{mark c++17}}|{{c|std::pmr::match_results<const wchar_t*>}}}} |
− | {{dsc | {{tt|std::pmr::smatch}} {{mark c++17}}| {{c|std::pmr::match_results<std::string::const_iterator>}}}} | + | {{dsc|{{tt|std::pmr::smatch}} {{mark c++17}}|{{c|std::pmr::match_results<std::string::const_iterator>}}}} |
− | {{dsc | {{tt|std::pmr::wsmatch}} {{mark c++17}}| {{c|std::pmr::match_results<std::wstring::const_iterator>}}}} | + | {{dsc|{{tt|std::pmr::wsmatch}} {{mark c++17}}|{{c|std::pmr::match_results<std::wstring::const_iterator>}}}} |
{{dsc end}} | {{dsc end}} | ||
===Member types=== | ===Member types=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc hitem | Member type | Definition}} | + | {{dsc hitem|Member type|Definition}} |
− | {{dsc | {{tt|allocator_type}} | {{ | + | {{dsc|{{tt|allocator_type}}|{{|Allocator}}}} |
− | {{dsc | {{tt|value_type}} | {{c|std::sub_match<BidirIt>}}}} | + | {{dsc|{{tt|value_type}}|{{c|std::sub_match<BidirIt>}}}} |
− | {{dsc | {{tt|const_reference}} | {{c|const value_type&}}}} | + | {{dsc|{{tt|const_reference}}|{{c|const value_type&}}}} |
− | {{dsc | {{tt|reference}} | {{ | + | {{dsc|{{tt|reference}}|{{|value_type&}}}} |
− | {{dsc | {{tt|const_iterator}} | | + | {{dsc|{{tt|const_iterator}}|depends on the underlying container}} |
− | {{dsc | {{tt|iterator}} | {{ | + | {{dsc|{{tt|iterator}}|{{|const_iterator}}}} |
− | {{dsc | {{tt|difference_type}} | {{c|std::iterator_traits<BidirIt>::difference_type}}}} | + | {{dsc|{{tt|difference_type}}|{{c|std::iterator_traits<BidirIt>::difference_type}}}} |
− | {{dsc | {{tt|size_type}} | {{c|std::allocator_traits<Alloc>::size_type}}}} | + | {{dsc|{{tt|size_type}}|{{c|std::allocator_traits<Alloc>::size_type}}}} |
− | {{dsc | {{tt|char_type}} | {{c|std::iterator_traits<BidirIt>::value_type}}}} | + | {{dsc|{{tt|char_type}}|{{c|std::iterator_traits<BidirIt>::value_type}}}} |
− | {{dsc | {{tt|string_type}} | {{c|std::basic_string<char_type>}}}} | + | {{dsc|{{tt|string_type}}|{{c|std::basic_string<char_type>}}}} |
{{dsc end}} | {{dsc end}} | ||
===Member functions=== | ===Member functions=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/regex/match_results/dsc constructor}} | + | {{dsc inc|cpp/regex/match_results/dsc constructor}} |
− | {{dsc inc | cpp/regex/match_results/dsc destructor}} | + | {{dsc inc|cpp/regex/match_results/dsc destructor}} |
− | {{dsc inc | cpp/regex/match_results/dsc operator{{=}}}} | + | {{dsc inc|cpp/regex/match_results/dsc operator{{=}}}} |
− | {{dsc inc | cpp/regex/match_results/dsc get_allocator}} | + | {{dsc inc|cpp/regex/match_results/dsc get_allocator}} |
− | {{dsc h2 | State}} | + | {{dsc h2|State}} |
− | {{dsc mem fun | cpp/regex/match_results/ready | checks if the results are available}} | + | {{dsc mem fun|cpp/regex/match_results/ready|checks if the results are available}} |
− | {{dsc h2 | Size}} | + | {{dsc h2|Size}} |
− | {{dsc inc | cpp/regex/match_results/dsc empty}} | + | {{dsc inc|cpp/regex/match_results/dsc empty}} |
− | {{dsc inc | cpp/regex/match_results/dsc size}} | + | {{dsc inc|cpp/regex/match_results/dsc size}} |
− | {{dsc inc | cpp/regex/match_results/dsc max_size}} | + | {{dsc inc|cpp/regex/match_results/dsc max_size}} |
− | {{dsc h2 | Element access}} | + | {{dsc h2|Element access}} |
− | {{dsc inc | cpp/regex/match_results/dsc length}} | + | {{dsc inc|cpp/regex/match_results/dsc length}} |
− | {{dsc inc | cpp/regex/match_results/dsc position}} | + | {{dsc inc|cpp/regex/match_results/dsc position}} |
− | {{dsc inc | cpp/regex/match_results/dsc str}} | + | {{dsc inc|cpp/regex/match_results/dsc str}} |
− | {{dsc inc | cpp/regex/match_results/dsc operator_at}} | + | {{dsc inc|cpp/regex/match_results/dsc operator_at}} |
− | {{dsc inc | cpp/regex/match_results/dsc prefix}} | + | {{dsc inc|cpp/regex/match_results/dsc prefix}} |
− | {{dsc inc | cpp/regex/match_results/dsc suffix}} | + | {{dsc inc|cpp/regex/match_results/dsc suffix}} |
− | {{dsc h2 | Iterators}} | + | {{dsc h2|Iterators}} |
− | {{dsc inc | cpp/regex/match_results/dsc begin}} | + | {{dsc inc|cpp/regex/match_results/dsc begin}} |
− | {{dsc inc | cpp/regex/match_results/dsc end}} | + | {{dsc inc|cpp/regex/match_results/dsc end}} |
− | {{dsc h2 | Format}} | + | {{dsc h2|Format}} |
− | {{dsc inc | cpp/regex/match_results/dsc format | + | {{dsc inc|cpp/regex/match_results/dsc format}} |
− | + | ||
− | + | ||
− | + | ||
+ | |||
+ | |||
{{dsc end}} | {{dsc end}} | ||
===Non-member functions=== | ===Non-member functions=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc inc | cpp/regex/match_results/dsc operator_cmp}} | + | {{dsc inc|cpp/regex/match_results/dsc operator_cmp}} |
− | {{dsc inc | cpp/regex/match_results/dsc swap2}} | + | {{dsc inc|cpp/regex/match_results/dsc swap2}} |
{{dsc end}} | {{dsc end}} | ||
− | + | deesfritjakoptruzh | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Latest revision as of 07:15, 25 December 2023
Defined in header <regex>
|
||
template< class BidirIt, |
(1) | (since C++11) |
namespace pmr { template <class BidirIt> |
(2) | (since C++17) |
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 std::sub_match (index 0) contained in a std::match_result
always represents the full match within a target sequence made by a regex, and subsequent std::sub_matches represent sub-expression matches corresponding in sequence to the left parenthesis delimiting the sub-expression in the regex.
std::match_results
meets the requirements of a AllocatorAwareContainer and of a SequenceContainer, except that only copy assignment, move assignment, and operations defined for a constant containers are supported, and that the semantics of comparison functions are different from those required for a container.
Contents |
[edit] Type requirements
-BidirIt must meet the requirements of LegacyBidirectionalIterator.
| ||
-Alloc must meet the requirements of Allocator.
|
[edit] Specializations
Several specializations for common character sequence types are provided:
Defined in header
<regex> | |
Type | Definition |
std::cmatch
|
std::match_results<const char*> |
std::wcmatch
|
std::match_results<const wchar_t*> |
std::smatch
|
std::match_results<std::string::const_iterator> |
std::wsmatch
|
std::match_results<std::wstring::const_iterator> |
std::pmr::cmatch (C++17)
|
std::pmr::match_results<const char*> |
std::pmr::wcmatch (C++17)
|
std::pmr::match_results<const wchar_t*> |
std::pmr::smatch (C++17)
|
std::pmr::match_results<std::string::const_iterator> |
std::pmr::wsmatch (C++17)
|
std::pmr::match_results<std::wstring::const_iterator> |
[edit] Member types
Member type | Definition |
allocator_type
|
Allocator
|
value_type
|
std::sub_match<BidirIt> |
const_reference
|
const value_type& |
reference
|
value_type&
|
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> |
[edit] Member functions
constructs the object (public member function) | |
destructs the object (public member function) | |
assigns the contents (public member function) | |
returns the associated allocator (public member function) | |
State | |
checks if the results are available (public member function) | |
Size | |
checks whether the match was successful (public member function) | |
returns the number of matches in a fully-established result state (public member function) | |
returns the maximum possible number of sub-matches (public member function) | |
Element access | |
returns the length of the particular sub-match (public member function) | |
returns the position of the first character of the particular sub-match (public member function) | |
returns the sequence of characters for the particular sub-match (public member function) | |
returns specified sub-match (public member function) | |
returns sub-sequence between the beginning of the target sequence and the beginning of the full match (public member function) | |
returns sub-sequence between the end of the full match and the end of the target sequence (public member function) | |
Iterators | |
returns iterator to the beginning of the list of sub-matches (public member function) | |
returns iterator to the end of the list of sub-matches (public member function) | |
Format | |
formats match results for output (public member function) | |
Modifiers | |
swaps the contents (public member function) |
[edit] Non-member functions
(removed in C++20) |
lexicographically compares the values in the two match result (function template) |
specializes the std::swap algorithm (function template) |