QT 正規表示式

2021-08-17 21:08:10 字數 1435 閱讀 3045

/*正規表示式(編寫程式的時候,注意雙層轉義字元解析,(有兩次轉義字元解析))

see also :

上述網頁講述了正規表示式的規則,但實際使用時要注意每個'\'符號前面要

重複加乙個'\',見18行

*/int main(int argc, char *argv)

// pos will be 9, 14, 18 and finally 24; count will end up as 4

qregexp rx3(".\\b");// \b不匹配任何實際的字元,只表示字母和非字母的分界

cout << "position = " << rx3.indexin("@@@abc") << endl;

cout << "str is " << rx3.cap(0).tostdstring() << endl;//詳見以下介紹

cout << "length = " << rx3.matchedlength() << endl;

qregexp rx4("\\bend\\b");

cout << "position = " << rx4.indexin("weekend,endfor,end") << endl;

cout << "length = " << rx4.matchedlength() << endl;

//cap(int nth=0)函式返回和對應的子表示式匹配的字串,引數nth為子表示式的編號,預設為整個大表示式

//eg 如下

//子表示式0,代表整個正規表示式,子表示式1,代表(\\+d), 子表示式2代表(cm|inch),因為(?:\\s*)表示式中

//?:將此子表示式忽略,若不用?: 下面rxlen.cap(2) 應該返回空,而不是cm,rxlen(3)返回cm

qregexp rxlen("(\\d+)(?:\\s*)(cm|inch)");

pos = rxlen.indexin("length: 189cm");

if (pos > -1)

/*注意,這裡匹配括號,和linux中sed grep等命令的不同

*grep sed 後跟的正規表示式中(的特殊含義預設是關閉的,要使用\(開啟

* 而這裡正好相反,(對正規表示式的特殊含義預設是開啟的,要使用\(關閉

* 例如shell中使用grep 匹配以(開頭的行 cat xx.txt | grep '^('

* 而這裡卻要使用\(關閉括號的特殊含義,詳見linux筆記

*/qregexp rx5("\\(\\w*\\)");

pos = rx5.indexin("(weiyuyin)");

if(pos > -1)

return a.exec();

}

Qt 正規表示式

qregexp是qt的正規表示式類.qt中有兩個不同類的正規表示式.第一類為元字元.它表示乙個或多個常量表示式.令一類為 轉義字元,它代表乙個特殊字元.一.元字元 匹配任意單個字元.例如,1.3 可能是1.後面跟任意字元,再跟3 匹配字串首.例如,12可能是123,但不能是312 配字串尾.例如,1...

Qt 正規表示式

1.qregexp exp ab ab,abb qregexp exp d 一位數字 qregexp exp x zx z xyz之間的一位 不區分大小寫 qregexp exp 2 6 2 6之間的一位數字 qregexp exp 0 9 0 999 qregexp exp 0 9 0 9 一位整...

Qt正規表示式

20201016 舉例 字符集 aeiou 表示匹配所有的大寫母音字母 字符集 aeiou 表示匹配所有的非母音字母,即子音字母 連續字符集 a z 表示匹配所有的小寫英文本母 正規表示式的量詞 quantifiers 量詞含義 量詞含義e?匹配0次或1次 e n,至少匹配n次e 匹配1次或多次 e...