日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT正则表达式介绍与使用

發布時間:2023/12/16 c/c++ 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT正则表达式介绍与使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

QT正則表達式介紹與使用

QT正則表達式提取指定條件字符串以及字符串條件的判斷_txwtech的博客-CSDN博客/匹配cd開頭,a2結尾的字符串,cd1a2--true,cd12a2--false,cd后面的.點,一個點代表一位(. 匹配任意單個字符)//匹配以cd開頭,a2結尾的任意字符串,cd1a2--true,cd123a2--true,\w后面的*, 匹配任意字符。//------轉義字符---https://txwtech.blog.csdn.net/article/details/126408242?//-----/w 匹配字母、數字、下劃線、漢字。//------元字符---https://txwtech.blog.csdn.net/article/details/126469018?spm=1001.2014.3001.5502

一、 QT中的QRegExp類實現了正則表達式的模式匹配

二、Qt中有兩個不同類的正則表達式.
- 第一類為元字符.它表示一個或多個常量表達式.
- 另外一類為 轉義字符,它是代表一個特殊字符.

1) 元字符如下介紹:


.? (一個小點)匹配任意單個字符.例如, 2.3 可能是2. 后面跟任意字符,再跟3,匹配除了換行符以外的任意字符

rx5.setPattern(QString("(SLA.*\\$)"));//提取SLA開始,$結尾的字符串 QString raw_str5="this is good SLA which is 20 years old $ nice day";

輸出結果: "SLA which is 20 years old $"

^?匹配字符串首. 例如, ^56可能是563,但不能是356
$ 配字符串尾. 例如, 56$可以是356, 當不能是 563
[ ] 匹配括號內輸入的任意字符.[623]可以為6, 2 或3
* 匹配任意數量的前導字符. 例如, 1*2可以為任意數量個1(甚至沒有), 后面跟一個2
+ 匹配至少一個前導字符. 例如, 1+2必須為一個或多個1, 后跟一個2
? 匹配一個前導字符或為空. 例如 1?2可以為2或這12

2)統配模式
通過 QRegExp::setPatternSyntax(QRegExp::Wildcard);可以將元字符設置為統配模式.在統配模式下,只有3個元字符可以使用.他們的功能沒有變化.
? 匹配任意單個字符, 例如, 1?2可以為1,后面跟任意單個字符, 再跟2
* 匹配任意一個字符序列. 例如, 1*2, 可以為1, 后面跟任意數量的字符, 再跟一個2
[] 匹配一個定義的字符集合. 例如, [a-zA-Z\.]可以匹配 a到z之間任意一個字符和. [^a]匹配出小寫a以外的字符.

3)轉義序列

\. 匹配”.”

\^ 匹配”^”

\$ 匹配”$”

\[ 匹配"["

\] 匹配”]”

\* 匹配”*”

\+ 匹配”+”

\? 匹配”?”

\b 匹配響鈴字符,使計算機發出嘟的一聲.

\t 制表符號\n 換行符號

\r 回車符鉿

\s 任意空格

\xnn 匹配16進制為nn的字符

\0nn 匹配8進制的nn字符

這些表達式均以\開始, 與C++的轉義字符相同,所以為了定義QRegExp中的一個轉義序列,需要在前面添加兩個\\

3、QRegExp類的構造函數

- 默認構造函數,QRegExp(),產生一個空的正則表達式對象。

- 拷貝構造函數,QRegExp(const QRegExp& patten)

- 模式構造函數,QRegExp ( const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = RegExp),產生指定匹配模式的正則表達式對象。

4、可以獲得正則表達式對象的信息和匹配信息

1) isValid(),判斷正則表達式是否合法,合法返回true,否則返回false。
例如:QRegExp exp1("c[9]"); ?
bool valid=exp1.isValid();//返回true ?
QRegExp exp1("c[9"); ?
bool valid=exp1.isValid();//返回false ?

2)errorString()
檢查正則是否有錯誤,和isValid類似,當有錯誤時返回"no error occurred", 無錯誤返回"unexpected end"

3)isEmpty(),判斷正則是否為空,當采用默認構造函數生成正則時,此函數返回true,否則返回false。
e.g. QRegExp exp1;
bool valid=exp1.isEmpty();//返回true

4) caseSensitivity () 看正則是否大小寫敏感。

5) cap(),capturedTexts () 前者獲得捕捉的每一項,index從1開始,后者則獲得整個捕捉列表。

6) exactMatch(QString),返回是否整串匹配,匹配一部分也返回false。

7) indexIn(),進行匹配,如果成功則返回index,不成功返回-1

8) matchedLength(),返回匹配的串的長度。

9) numCaptures(),獲得正則里捕捉項的個數。

10) pattern(),獲得正則本身

11) patternSyntax()
enum PatternSyntax { RegExp, RegExp2, Wildcard, FixedString } 默認為RegExp。

5、舉例

QRegExp rx;
rx.setPatternSyntax(QRegExp::RegExp);
rx.setCaseSensitivity(Qt::CaseSensitive); //大小寫敏感
rx.setPattern(QString("^[A-Za-z0-9]+$")); //匹配所有大小寫字母和數字組成的字符串
QString s = "dsada@";
rx.exactMatch(s); //返回的值為false,因為s中含有@字符

------------------------------------------------------------------------------------

1、常用正則表達式

字符 說明

\r, \n 代表 回車和換行符

\t 制表符

\\ 代表 "\" 本身

\^ 匹配 ^ 符號本身

\$ 匹配 $ 符號本身

. 匹配除了換行符以外的任意字符

\w 匹配字母、數字、下劃線、漢字

\s 匹配任意的空白符

\b 單詞的開始或結尾 ?

\~ 匹配字符串的開始 ?

$ 匹配字符串的結束

\ba\w*\b :匹配以字母a開頭的單詞——先是某個單詞開始處(\b),然后是字母a,然后是任意數量的字母或數字(\w*),最后是單詞結束處(\b)。
\d+ :匹配1個或更多連續的數字。這里的+是和*類似的元字符,不同的是*匹配重復任意次(可能是0次),而+則匹配重復1次或更多次。
\b\w{6}\b: 匹配剛好6個字符的單詞。
?

[] ?包含一系列字符

[^] ?包含之外一系列字符
?

[ab5@]: 匹配 "a" 或 "b" 或 "5" 或 "@"

[^abc]: 包含abc之外的任意字符

[f-k]: f-k之間的任意字符

表達式 說明

{n} 表達式重復n次,比如:"\w{2}" 相當于 "\w\w";"a{5}" 相當于 "aaaaa"

{m,n} 表達式至少重復m次,最多重復n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa

{m,} 表達式至少重復m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344".

? 匹配表達式0次或者1次,相當于 {0,1},比如:"a[cd]?"可以匹配 "a","ac","ad"

+ + 表達式至少出現1次,相當于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab". ?

* 表達式不出現或出現任意次,相當于 {0,},比如:"\^*b"可以匹配 "b","^^^b".

比如:"\w{2}" 相當于 "\w\w";"a{5}" 相當于 "aaaaa"

比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa"

比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"...

如:"a[cd]?"可以匹配 "a","ac","ad"

如:"a+b"可以匹配 "ab","aab","aaab"

如:"\^*b"可以匹配 "b","^^^b"


舉例1:表達式 "\d+\.?\d*" 在匹配 "It costs $12.5" 時,匹配的結果是:成功;匹配到的內容是:"12.5";匹配到的位置是:開始于10,結束于14。

舉例2:表達式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 時,匹配的結果是:成功;匹配到的內容是:"goooooogle";匹配到的位置是:開始于7,結束于17。

---------------------------txwtech---------------------------------------------------------
?

[ab5@] 匹配 "a" 或 "b" 或 "5" 或 "@"

[f-k] 匹配 "f"~"k" 之間的任意一個字母

[^abc] 匹配 "a","b","c" 之外的任意一個字符

[^A-F0-3] 匹配 "A"~"F","0"~"3" 之外的任意一個字符

舉例1:表達式 "[tcd][tcd]" 匹配 "atc123" 時,匹配的結果是:成功;匹配到的內容是:"tc";匹配到的位置是:開始于1,結束于3。

舉例2:表達式 "[^atc]" 匹配 "atc123" 時,匹配的結果是:成功;匹配到的內容是:"1";匹配到的位置是:開始于3,結束于4。

歡迎討論,相互學習。 txwtech@163.com

總結

以上是生活随笔為你收集整理的QT正则表达式介绍与使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。