C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. 正則表達式語言 ECMAScript
- 模式[ [::alpha: ] ] 匹配任意字母
- 符號+和*分別表示我們希望“ 一個或多個” 或“ 零個或多個” 匹配。
2. 指定 regex 對象的選項
當我們定義一個 regex 或是對一個 regex 調用 assign 為其賦予新值時, 可以指定一些標志來影響 regex 如何操作。 這些標志控制 regex 對象的處理過程。
當定義一個regex或是對一個regex調用assign為其賦予新值時,可以指定其標志。
2.1 regex(和wregex)選項
-
最后 6 個標志指出編寫正則表達式所用的語言。 對這 6 個標志, 我們必須設置其中之一,且只能設置一個。
-
默認情況下, ECMAScript 標志被設置, 從而 regex 會使用 ECMA-262規范, 這也是很多 Web 瀏覽器所使用的正則表達式語言。
| regex r(re) | re表示一個正則表達式,可以是一個string、一個表示字符范圍的迭代器對 |
| regex r(re, f) | 一個指向空字符結尾的字符數組的指針等。f是指出對象如何處理的標志。 |
| r1 = re | 將r1中的正則表達式替換為re,re表示一個正則表達式,可以是另一個regex對象、一個string、一個指向空字符結尾的字符數組的指針或是一個花括號包圍的字符列表 |
| r1.assign(re,f) | 與使用賦值運算符(=)效果相同;可選的標志f也與regex的構造函數中對應的參數含義相同 |
| r.mark_count() | r中子表達式的數目 |
| r.flags() | 返回r的標志集 |
2.2 定義regex時指定的標志
定義在regex和regex_constants::syntax_option_type中
| icase | 在匹配過程中忽略大小寫 |
| nosubs | 不保存匹配的子表達式 |
| optimize | 執行速度優先于構造速度 |
| ECMAScript | 使用ECMA-262指定的語法 |
| basic | 使用POSIX基本的正則表達式 |
| extended | 使用POSIX擴展的正則表達式 |
| awk | 使用POSIX版本的awk語言的語法 |
| grep | 使用POSIX版本的grep語言的語法 |
| egrep | 使用POSIX版本的egrep語言的語法 |
使用icase標志來查找具有特定擴展名的文件名,其示例如下:
//正則表達式[^c]表明我們希望匹配任意不是c的字符,而[^c]ei指出希望匹配這種字符后接ei的字符串。 //一個或多個字母或數字字符后接一個'.'再接"cpp"或"cxx"或"cc" regex r("[[:alnum:]] + \\.(cpp|cxx|cc)$", regex::icase); smatch results; string filename; while (cin >> filename)if (regex_search(filename, results, r))cout << results.str() << endl; //打印匹配結果總結
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 17 标准库特殊设施)正则表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: C++ Primer 5th笔记(cha