Regex++是一套完全以C++寫成的regex lib,支援VC、BCB、GCC等等C++ compiler,由於使用template的方式設計, 於是不但可以用在std::string上,char*、甚至是stlport特有的rope都沒問題
regex++使用步驟:
常用的regex pattern如下
\ | 標示下一個字元為特殊字元或文字 |
^ | 對應輸入的開頭 |
$ | 對應輸入的結尾 |
* | 對應前面的字元 0 次或更多次 |
+ | 對應前面的字元一次或更多次 |
? | 對應前面的字元 0 次或一次 |
. | 對應換行字元以外的任何單一字元。 |
(pattern) | 比對模式並記錄符合的項目。對應的子字串可透過「項目」[0]...[n],從結果的 Matches 集合中擷取。若要對應括弧字元 (),請使用 \( 或 \)。 |
x|y | 對應 x 或 y |
{n} | n 是一個正整數,必須完全對應 n 次 |
{n,} | n 是一個正整數,至少應對應 n 次 |
{n,m} | m 和 n 都是正整數,至少應對應 n 次,最多 m 次 |
[xyz] | 這是一個字元集,可對應任何一個括住的字元 |
[^xyz] | 這是一個負的字元集,對應任何未括住的字元 |
[a-z] | 這是一個字元範圍,對應指定範圍內的任何字元 |
[^m-z] | 這是一個負的字元範圍,對應指定範圍外的任何字元 |
\b | 對應一個文字界緣 (word boundary),也就是文字和空格之間的位置。 |
\B | 對應一個非文字界緣。ea*r\B 可對應 never early 中的 ear。 |
\d | 對應數字字元,相當於 [0-9]。 |
\D | 對應非數字字元,相當於 [^0-9]。 |
\f | 對應一個換頁字元。 |
\n | 對應一個換行字元。 |
\r | 對應一個復位字元。 |
\s | 對應任何空白,包括空格、定位 (tab) 和換頁等等,相當於 [ \f\n\r\t\v]。 |
\S | 對應任何非空白字元,相當於 [^ \f\n\r\t\v]。 |
\t | 對應一個定位字元。 |
\v | 對應一個垂直定位字元。 |
\w | 對應包括底線在內的任何文字字元,相當於 [A-Za-z0-9_]。 |
\W | 對應任何非文字字元,相當於 [^A-Za-z0-9_]。 |
\num | 對應 num,此處的 num 是一個正整數。它是一個回到記憶符合項目的參考。例如,(.)\1 可對應兩個連續的相同字元。 |
\n | 對應 n,此處的 n 是一個八進位的 escape 值。八進位的 escape 值必須等於 1、2 或 3 個數字的長度。例如 \11 和 \011 都可對應一個定位字元。\0011 相當於 \001 與 1。八進位的 escape 值不得超過 256,否則運算式只會使用前兩個數字。這個字元可讓通用運算式能使用 ASCII 程式碼。 |
\xn | 對應 n,此處的 n 是一個十六進位的 escape 值。十六進位的 escape 值必須正好等於 2 個數字的長度。例如 \x41 可對應 A。\x041 相當於 \x04 與 1。這個字元可讓通用運算式能使用 ASCII 程式碼。 |