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_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_replace
std::regex_replace
| å®ä¹äºå¤´æä»¶ <regex>
|
||
| template< class OutputIt, class BidirIt, Â Â Â Â Â class Traits, class CharT, |
(1) | (C++11 èµ·) |
| template< class OutputIt, class BidirIt, Â Â Â Â Â class Traits, class CharT > |
(2) | (C++11 èµ·) |
| template< class Traits, class CharT, Â Â Â Â Â class STraits, class SAlloc, |
(3) | (C++11 èµ·) |
| template< class Traits, class CharT, Â Â Â Â Â class STraits, class SAlloc > |
(4) | (C++11 èµ·) |
| template< class Traits, class CharT, Â Â Â Â Â class STraits, class SAlloc > |
(5) | (C++11 èµ·) |
| template< class Traits, class CharT > std::basic_string<CharT> |
(6) | (C++11 èµ·) |
regex_replace ç¨æ£å表达å¼è¿è¡å符åºåçæ¿æ¢ï¼
[first,last) ä¸çåç¬¦å° out ï¼ä»¥ re ææ ¼å¼åçåç¬¦æ¿æ¢ä»»ä½å¹é
fmt çåºåãæ¢è¨ä¹ï¼- å¦å以 std::regex_iterator<BidirIt, CharT, traits> i(first, last, re, flags) æé std::regex_iterator 对象
iï¼å¹¶ç¨å®å¨åºå[first,last)å åè¿éè¿æ¯ä¸ªreçå¹é ã - å¯¹äºæ¯ä¸ªå¹é
mï¼å¦åç¨ out = std::copy(m.prefix().first, m.prefix().second, out) å¤å¶éå¹é ååºåï¼m.prefix()ï¼å°outï¼ç¶åå¦åéè¿è°ç¨ out = m.format(out, fmt, flags) ï¼ä»¥æ ¼å¼åæ¿æ¢åç¬¦ä¸²æ¿æ¢å¹é çååºåã - æ¾ä¸å°æ´å¤å¹é
æ¶ï¼å¦åç¨ out = std::copy(last_m.suffix().first, last_m.suffix().second, out) å¤å¶å©ä½çéå¹é
å符å°
outï¼å ¶ä¸last_mæ¯æ¾å°çæåå¹é ç坿¬ã - è¥æ å¹é
ï¼ååæå°å¤å¶æ´ä¸ªåºåå°
outï¼ä»¥ out = std::copy(first, last, out) ã - è¥
flags嫿 std::regex_constants::format_no_copy ï¼åä¸å¤å¶éå¹é çååºåå°outã - è¥
flags嫿 std::regex_constants::format_first_only ï¼ååªæ¿æ¢é¦ä¸ªå¹é ã
- å¦å以 std::regex_iterator<BidirIt, CharT, traits> i(first, last, re, flags) æé std::regex_iterator 对象
result ï¼å¹¶è°ç¨ std::regex_replace(std::back_inserter(result), s.begin(), s.end(), re, fmt, flags) ãresult å¹¶è°ç¨ std::regex_replace(std::back_inserter(result), s, s + std::char_traits<CharT>::length(s), re, fmt, flags) ãåæ°
| first, last | - | 以ä¸å¯¹è¿ä»£å¨è¡¨ç¤ºçè¾å ¥å符åºå |
| s | - | 以 std::basic_string æå符æ°ç»è¡¨ç¤ºçè¾å ¥å符åºå |
| re | - | å°ä¸è¾å ¥åºåå¹é ç std::basic_regex |
| flags | - | std::regex_constants::match_flag_type ç±»åçå¹é æ å¿ |
| fmt | - | æ£åè¡¨è¾¾å¼æ¿æ¢æ ¼å¼å符串ï¼åç¡®è¯æ³ä¾èµäº flags çå¼
|
| out | - | å卿¿æ¢ç»æçè¾åºè¿ä»£å¨ |
| ç±»åè¦æ± | ||
-OutputIt å¿
须满足éçè¾åºè¿ä»£å¨ (LegacyOutputIterator) çè¦æ±ã
| ||
-BidirIt å¿
须满足éçååè¿ä»£å¨ (LegacyBidirectionalIterator) çè¦æ±ã
| ||
è¿åå¼
out 卿ææå
¥åç坿¬ãresult ãå¼å¸¸
å¯è½æåºæç¤ºé误æ¡ä»¶ç std::regex_error ã
示ä¾
#include <iostream> #include <iterator> #include <regex> #include <string>  int main() { std::string text = "Quick brown fox"; std::regex vowel_re("a|e|i|o|u");  // åç»æå°è¾åºè¿ä»£å¨ std::regex_replace(std::ostreambuf_iterator<char>(std::cout), text.begin(), text.end(), vowel_re, "*");  // æé ä¿æç»æçå符串 std::cout << '\n' << std::regex_replace(text, vowel_re, "[$&]") << '\n'; }
è¾åºï¼
Q**ck br*wn f*x Q[u][i]ck br[o]wn f[o]x
åé
| (C++11) |
å°è¯å¹é
ä¸ä¸ªæ£å表达å¼å°å符åºåçä»»ä½é¨å (彿°æ¨¡æ¿) |
| (C++11) |
ç¹å®äºå¹é
çé项 (typedef) |