31 Regular expressions library [re]

31.11 Regular expression algorithms [re.alg]

31.11.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);

Requires: Тип BidirectionalIterator должен соответствовать требованиям а Bidirectional Iterator.

Effects: Определяет, есть ли внутри подпоследовательность, [first, last) которая соответствует регулярному выражению e. Параметр flags используется для управления тем, как выражение сопоставляется с последовательностью символов. Возвращает, true если такая последовательность существует, в false противном случае.

Postconditions: m.ready() == true в любом случае. Если функция возвращает результат false, то влияние на параметр m не определено, за исключением того, что m.size() возвращается 0 и m.empty() возвращается true. В противном случае влияние на параметр m приведено в таблице 136.

Таблица 136 - Эффекты regex_­search алгоритма
ЭлементЦенить
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 Начало последовательности символов, соответствующих регулярному выражению.
m[0].second Конец последовательности символов, соответствующей регулярному выражению.
m[0].matched true
m[n].first Для всех целых чисел 0 < n < m.size()- начало последовательности, соответствующей подвыражению n. В качестве альтернативы, если подвыражение n не участвовало в сопоставлении, тогда last.
m[n].second Для всех целых чисел 0 < n < m.size()- конец последовательности, соответствующей подвыражению n. В качестве альтернативы, если подвыражение n не участвовало в сопоставлении, тогда last .
m[n].matched Для всех целых чисел 0 < n < m.size(), true если n в совпадении участвовало подвыражение, в false противном случае.

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: Ведет себя «как будто», создавая объект what типа match_­results<BidirectionalIterator> и возвращая его regex_­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).