[re.alg.search] (original) (raw)

30 Regular expressions library [re]

30.10 Regular expression algorithms [re.alg]

30.10.3 regex_­search [re.alg.search]

template<class BidirectionalIterator, class Allocator, class charT, class traits> bool regex_search(BidirectionalIterator first, BidirectionalIterator last, match_results<BidirectionalIterator, Allocator>& m,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Effects: Determines whether there is some sub-sequence within [first, last) that matches the regular expression e.

The parameter flags is used to control how the expression is matched against the character sequence.

Returns true if such a sequence exists, false otherwise.

Postconditions: m.ready() == true in all cases.

If the function returns false, then the effect on parameter m is unspecified except that m.size()returns 0 and m.empty() returns true.

Otherwise the effects on parameter m are given in Table 142.

Table 142: Effects of regex_­search algorithm [tab:re.alg.search]

🔗 Element Value
🔗 m.size() 1 + e.mark_­count()
🔗 m.empty() false
🔗 m.prefix().first first
🔗 m.prefix().second m[0].first
🔗 m.prefix().matched m.prefix().first != m.prefix().second
🔗 m.suffix().first m[0].second
🔗 m.suffix().second last
🔗 m.suffix().matched m.suffix().first != m.suffix().second
🔗 m[0].first The start of the sequence of characters that matched the regular expression
🔗 m[0].second The end of the sequence of characters that matched the regular expression
🔗 m[0].matched true
🔗 m[n].first For all integers 0 < n < m.size(), the start of the sequence that matched sub-expression n. Alternatively, if sub-expression ndid not participate in the match, then last.
🔗 m[n].second For all integers 0 < n < m.size(), the end of the sequence that matched sub-expression n. Alternatively, if sub-expression n did not participate in the match, then last.
🔗 m[n].matched For all integers 0 < n < m.size(), true if sub-expression nparticipated in the match, false otherwise.

template<class charT, class Allocator, class traits> bool regex_search(const charT* str, match_results<const charT*, Allocator>& m,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Returns: regex_­search(str, str + char_­traits<charT>​::​length(str), m, e, flags).

template<class ST, class SA, class Allocator, class charT, class traits> bool regex_search(const basic_string<charT, ST, SA>& s, match_results<typename basic_string<charT, ST, SA>::const_iterator, Allocator>& m,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Returns: regex_­search(s.begin(), s.end(), m, e, flags).

template<class BidirectionalIterator, class charT, class traits> bool regex_search(BidirectionalIterator first, BidirectionalIterator last,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Effects: Behaves “as if” by constructing an object whatof type match_­results<BidirectionalIterator> and returningregex_­search(first, last, what, e, flags).

template<class charT, class traits> bool regex_search(const charT* str,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Returns: regex_­search(str, str + char_­traits<charT>​::​length(str), e, flags).

template<class ST, class SA, class charT, class traits> bool regex_search(const basic_string<charT, ST, SA>& s,const basic_regex<charT, traits>& e, regex_constants::match_flag_type flags = regex_constants::match_default);

Returns: regex_­search(s.begin(), s.end(), e, flags).