C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. smatch允許獲得匹配的上下文
匹配類型有兩個名為 prefix 和 suffix的成員, 分別返回表示輸入序列中當前匹配之前和之后部分的 SSub_matCh 對象。
一個ssub_match 對象有兩個名為 str 和 length 的成員, 分別返回匹配的 string 和該string 的大小
// 顯示出匹配單詞的上下文 // 循環頭與之前一樣 for (sregex_iterator it(file.begin(), file.end(), r), end_it; it != end_it; ++it) {auto pos = it->prefix().length(); // 前綴的大小pos = pos > 40 ? pos - 40 : 0; // 我們想要最多40個字符cout << it->prefix().str().substr(pos) // 前綴的最后一部分<< " >>> " << it->str() << " <<<\n" // 匹配的單詞<< it->suffix().str().substr(0, 40) // 后綴的第一部分<< endl; }這些操作也適用于cmatch、wsmatch、wcmatch和對應的csub_match、wssub_match和wcsub_match
| m.ready() | 如果已經通過調用regex_search或regex_match設置了m,則返回true;否則返回false。如果ready返回false,則對m進行操作是未定義的 |
| m.size() | 如果匹配失敗,則返回0;否則返回最近一次匹配的正則表達式中子表達式的數目 |
| m.empty() | 若m.size()為0,則返回true |
| m.prefix() | 一個ssub_match對象,表示當前匹配之前的序列 |
| m.suffix() | 一個ssub_match對象,表示當前匹配之后的部分 |
| —— | 在接受一個索引的操作中,n的默認值為0且必須小于m.size()。 |
| —— | 第一個子匹配(索引為0)表示整個匹配。 |
| m.length(n) | 第n個匹配的子表達式的大小 |
| m.position(n) | 第n個子表達式據序列開始的距離 |
| m.str(n) | 第n個子表達式匹配的string |
| m[n] | 對應第n個子表達式的ssub_match對象 |
| m.begin(), m.end() or m.cbegin(), m.cend() | 表示m中sub_match元素范圍的迭代器。與往常一樣,cbegin()和cend()返回const_iterator |
總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)smatch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha