std::regex_token_iterator
Материал из cppreference.com
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
template< class BidirIt, |
(начиная с C++11) | |
std::regex_token_iterator
является доступной только для чтения ForwardIterator
, который обращается к отдельным суб-матчи каждого матча регулярного выражения в основной последовательности символов. Она также может быть использован для доступа к части последовательности, которые не соответствуют заданному регулярному выражению (например, в Tokenizer).Original:
std::regex_token_iterator
is a read-only ForwardIterator
that accesses the individual sub-matches of every match of a regular expression within the underlying character sequence. It can also be used to access the parts of the sequence that were not matched by the given regular expression (e.g. as a tokenizer).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
На строительство, он строит std::regex_iterator и на каждый шаг он уйдет через просьба к югу от матчей с текущей match_results, увеличивая основной regex_iterator, когда увеличивающиеся от последнего частичное совпадение.
Original:
On construction, it constructs an std::regex_iterator and on every increment it steps through the requested sub-matches from the current match_results, incrementing the underlying regex_iterator when incrementing away from the last submatch.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
По-умолчанию
std::regex_token_iterator
это конец последовательности итератор. Когда действительный std::regex_token_iterator
увеличивается после достижения последнего частичное совпадение последних матча, он становится равным конца последовательности итератор. Разыменование или увеличивая его дальнейшего вызывает неопределенное поведение.Original:
The default-constructed
std::regex_token_iterator
is the end-of-sequence iterator. When a valid std::regex_token_iterator
is incremented after reaching the last submatch of the last match, it becomes equal to the end-of-sequence iterator. Dereferencing or incrementing it further invokes undefined behavior.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Просто, прежде чем стать конца последовательности итератор, std::regex_token_iterator может стать итератор' суффикса, если индекс -1 (не соответствием фрагмент) появляется в списке просил индексы совпадение. Такой итератор, если разыменован, возвращает match_results соответствующее последовательности символов между последним матчем и в конце последовательности.
Original:
Just before becoming the end-of-sequence iterator, a std::regex_token_iterator may become a suffix iterator, if the index -1 (non-matched fragment) appears in the list of the requested submatch indexes. Such iterator, if dereferenced, returns a match_results corresponding to the sequence of characters between the last match and the end of sequence.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Типичная реализация
std::regex_token_iterator
содержит основные std::regex_iterator, контейнер (например, std::vector<int>) запрашиваемых показателей частичное совпадение, внутренний счетчик, равный индексу частичное совпадение, указатель на std::match_results, указывая на текущий частичное совпадение текущего матча, и std::match_results объект, содержащий последние не соответствием последовательности символов (используется в Tokenizer режим).Original:
A typical implementation of
std::regex_token_iterator
holds the underlying std::regex_iterator, a container (e.g. std::vector<int>) of the requested submatch indexes, the internal counter equal to the index of the submatch, a pointer to std::match_results, pointing at the current submatch of the current match, and a std::match_results object containing the last non-matched character sequence (used in tokenizer mode).The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Содержание |
[править] Тип требованиям
-BidirIt должен соответствовать требованиям BidirectionalIterator .
|
[править] Специализации
Несколько специализаций для распространенных типов последовательность символов определены
Original:
Several specializations for common character sequence types are defined:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
Определено в файле <regex>
| |
Type
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
cregex_token_iterator
|
regex_token_iterator<const char*> |
wcregex_token_iterator
|
regex_token_iterator<const wchar_t*> |
sregex_token_iterator
|
regex_token_iterator<std::string::const_iterator> |
wsregex_token_iterator
|
regex_token_iterator<std::wstring::const_iterator> |
[править] Член типов
Член типа
Original: Member type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
value_type
|
std::sub_match<BidirIt> |
difference_type
|
std::ptrdiff_t |
pointer
|
const value_type* |
reference
|
const value_type& |
iterator_category
|
std::forward_iterator_tag |
regex_type
|
basic_regex<CharT, Traits> |
[править] Член функций
создает новый regex_token_iterator Original: constructs a new regex_token_iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) | |
(destructor) (объявлено неявно) |
destructs a regex_token_iterator, including the cached value (public функция-член) |
заменяет regex_token_iterator Original: replaces a regex_token_iterator The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) | |
сравнивает два regex_token_iterators Original: compares two regex_token_iterators The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) | |
accsses текущего совпадение Original: accsses current submatch The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) | |
авансы regex_token_iterator к следующему совпадение Original: advances the regex_token_iterator to the next submatch The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (public функция-член) |
[править] Notes
В обязанности программиста для того, чтобы std::basic_regex объект, переданный в конструктор итератора переживет итератор. Поскольку итератор хранит std::regex_iterator, которая хранит указатель на регулярных выражений, увеличивая итератора после регулярных выражений была разрушена приводит к неопределенному поведению.
Original:
It is the programmer's responsibility to ensure that the std::basic_regex object passed to the iterator's constructor outlives the iterator. Because the iterator stores a std::regex_iterator which stores a pointer to the regex, incrementing the iterator after the regex was destroyed results in undefined behavior.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[править] Пример
#include <fstream> #include <iostream> #include <algorithm> #include <iterator> #include <regex> int main() { std::string text = "Quick brown fox."; // tokenization (non-matched fragments) // Note that regex is matched only two times: when the third value is obtained // the iterator is a suffix iterator. std::regex ws_re("\\s+"); // whitespace std::copy( std::sregex_token_iterator(text.begin(), text.end(), ws_re, -1), std::sregex_token_iterator(), std::ostream_iterator<std::string>(std::cout, "\n")); // iterating the first submatches std::string html = "<p><a href=\"http://google.com\">google</a> " "< a HREF =\"http://cppreference.com\">cppreference</a>\n</p>"; std::regex url_re("<\\s*A\\s+[^>]*href\\s*=\\s*\"([^\"]*)\"", std::regex::icase); std::copy( std::sregex_token_iterator(html.begin(), html.end(), url_re, 1), std::sregex_token_iterator(), std::ostream_iterator<std::string>(std::cout, "\n")); }
Вывод:
Quick brown fox. http://google.com http://cppreference.com