C++ åèæå
- C++11
- C++14
- C++17
- C++20
- C++ ç¼è¯å¨æ¯ææ åµè¡¨
- ç¬ç«ä¸å®¿ä¸»å®ç°
- C++ è¯è¨
- C++ å ³é®è¯
- é¢å¤çå¨
- C++ æ ååºå¤´æä»¶
- å ·åè¦æ±
- åè½ç¹æ§æµè¯ (C++20)
- å·¥å ·åº
- ç±»åæ¯æï¼åºæ¬ç±»åãRTTIãç±»åç¹æ§ï¼
- æ¦å¿µåº (C++20)
- é误å¤ç
- 卿å å管ç
- æ¥æåæ¶é´å·¥å ·
- å符串åº
- 容å¨åº
- è¿ä»£å¨åº
- èå´åº (C++20)
- ç®æ³åº
- æ°å¼åº
- è¾å ¥/è¾åºåº
- æä»¶ç³»ç»åº
- æ¬å°ååº
- æ£å表达å¼åº
- std::sub_match
- std::match_results
- std::basic_regex
- std::regex_search
- std::regex_replace
- std::regex_iterator
- std::regex_match
- std::regex_token_iterator
- std::regex_token_iterator<BidirIt,CharT,Traits>::operator++, operator++(int)
- std::regex_error
- std::regex_traits
- std::regex_constants::syntax_option_type
- std::regex_constants::match_flag_type
- std::regex_constants::error_type
- æ¹ ECMAScript æ£åè¡¨è¾¾å¼ææ³
- 注é
- ååæä½åº
- çº¿ç¨æ¯æåº
- å®éªæ§ C++ ç¹æ§
- æç¨çèµæº
- ç´¢å¼
- std 符å·ç´¢å¼
- åç¨æ¯æ (C++20)
- C++ å ³é®è¯
ä½ç½®ï¼é¦é¡µ > C++ åèæå >æ£å表达å¼åº > std::regex_token_iterator
std::regex_token_iterator
std::regex_token_iterator æ¯è®¿é®åºå±å符åºåå
æ¯ä¸ªæ£å表达å¼å¹é
çåç¬åå¹é
çåªè¯»éçååè¿ä»£å¨ (LegacyForwardIterator) ãå®äº¦å¯ç¨äºè®¿é®ä¸ä¸ºç»å®çæ£åè¡¨è¾¾å¼æå¹é
çåºåé¨åï¼ä¾å¦ä½ä¸ºè®°å·åå¨ï¼ã
æé æ¶ï¼å®æé ä¸ä¸ª std::regex_iterator ï¼è卿¯æ¬¡èªå¢æ¶ï¼å®èµ°è¿è¯·æ±çæ¥èªå½å match_results çåå¹é
ï¼å¹¶å¨èªå¢ç¦»å¼ä¸ä¸ªåå¹é
æ¶èªå¢åºå±ç regex_iterator ã
é»è®¤æé ç std::regex_token_iterator æ¯åºåå°¾è¿ä»£å¨ã卿µè¾¾æåå¹é
çæååå¹é
èªå¢åæ³ç std::regex_token_iterator æ¶ï¼å®åå¾çäºåºåå°¾è¿ä»£å¨ãè¿ä¸æ¥è§£å¼ç¨æèªå¢å®å¼åæªå®ä¹è¡ä¸ºã
卿°å¥½å为åºåå°¾è¿ä»£å¨åï¼è¥è¯·æ±çåå¹é
䏿 å表ä¸åºç° -1 ï¼éå¹é
ç¢çï¼ï¼å std::regex_token_iterator å¯æä¸ºåç¼è¿ä»£å¨ãè¥è§£å¼ç¨è¿ç§è¿ä»£å¨ï¼åè¿åå¯¹åºæåå¹é
ååºåç»å°¾ä¹é´çå符åºåç match_results ã
std::regex_token_iterator çå
¸åå®ç°ä¿æåºå±ç std::regex_iterator ã请æ±çåå¹é
䏿 ç容å¨ï¼ä¾å¦ std::vector<int> ï¼ãçäºåå¹é
䏿 çå
é¨è®¡æ°å¨ãæåå½åå¹é
çå½ååå¹é
çæå std::sub_match æéå嫿æè¿éå¹é
å符åºåç std::match_results 对象ï¼ç¨äºè®°å·å卿¨¡å¼ï¼ã
ç±»åè¦æ±
-BidirIt å¿
须满足éçååè¿ä»£å¨ (LegacyBidirectionalIterator) çè¦æ±ã
|
ç¹å
å®ä¹å¯¹å¸¸ç¨å符åºåç±»åçæ°ä¸ªç¹åï¼
| å®ä¹äºå¤´æä»¶
<regex> | |
| Â | |
| ç±»å | å®ä¹ |
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> |
æåç±»å
| Â | |
| æåç±»å | å®ä¹ |
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> |
æå彿°
注æ
ç¨åºåè´è´£ç¡®ä¿ä¼ éç»è¿ä»£å¨æé 彿°ç std::basic_regex 对象活å¾ä¹ äºè¿ä»£å¨ãå 为è¿ä»£å¨åå¨ std::regex_iterator ï¼å®å卿å regex çæéï¼æ å¨éæ¯ regex åèªå¢è¿ä»£å¨å¯¼è´æªå®ä¹è¡ä¸ºã
示ä¾
#include <fstream> #include <iostream> #include <algorithm> #include <iterator> #include <regex>  int main() { std::string text = "Quick brown fox."; // è®°å·åï¼éå¹é ç¢çï¼ // 注æä» å¹é äºæ¬¡ regex ï¼å¨è·å¾ç¬¬ä¸å¼æ¶è¿ä»£å¨ä¸ºåç¼è¿ä»£å¨ã std::regex ws_re("\\s+"); // 空ç½ç¬¦ 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"));  // è¿ä»£é¦ä¸ªåå¹é 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
