Qt中正則表達(dá)式的常見(jiàn)用法(QRegularExpression類)
一.基本功能介紹:
在Qt中,可以使用QRegularExpression類來(lái)處理正則表達(dá)式。以下是一些常用的正則表達(dá)式用法:
1.創(chuàng)建正則表達(dá)式對(duì)象:
QRegularExpression regex("pattern");
2.匹配字符串:
QString str = "Hello, World!"; if (regex.match(str).hasMatch()) { qDebug() << "Match found!"; } else { qDebug() << "No match found!"; }
3.捕獲匹配的內(nèi)容:
QRegularExpressionMatch match = regex.match(str); if (match.hasMatch()) { qDebug() << "Captured text: " << match.captured(); }
4.替換匹配的內(nèi)容:
QString replacedStr = regex.replace(str, "replacement");
5.檢測(cè)是否匹配:
if (regex.isValid()) { qDebug() << "Valid regex pattern!"; } else { qDebug() << "Invalid regex pattern!"; }
6.使用捕獲組:
QRegularExpression regex("(\\d+):(\\w+)"); QString str = "123:abc"; QRegularExpressionMatch match = regex.match(str); if (match.hasMatch()) { qDebug() << "Number: " << match.captured(1); qDebug() << "Text: " << match.captured(2); }
二.寫(xiě)法介紹
2.1:匹配的示例
當(dāng)使用正則表達(dá)式時(shí),可以根據(jù)具體的需求和匹配規(guī)則來(lái)編寫(xiě)不同的正則表達(dá)式模式。以下是一些常見(jiàn)的正則表達(dá)式寫(xiě)法示例:
匹配數(shù)字:\d+
- 示例:匹配一個(gè)或多個(gè)數(shù)字,例如:"123", "4567"等。
匹配字母:[a-zA-Z]+
- 示例:匹配一個(gè)或多個(gè)字母,不區(qū)分大小寫(xiě),例如:"abc", "XYZ"等。
匹配郵箱地址:\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Z|a-z]{2,}\b
- 示例:匹配常見(jiàn)的郵箱地址格式,例如:"example@example.com", "test123@test.com"等。
匹配URL:(http|https)://([\w-]+.)+[\w-]+(/[\w-./?%&=]*)?
- 示例:匹配常見(jiàn)的URL格式,例如:"http://www.example.com", "https://www.test.com/page1"等。
匹配手機(jī)號(hào)碼:1\d{10}
- 示例:匹配中國(guó)大陸手機(jī)號(hào)碼格式,以1開(kāi)頭,共11位數(shù)字,例如:"13912345678", "18888888888"等。
2.2:相關(guān)符號(hào)介紹
在正則表達(dá)式中,*、?、+、{n} 等符號(hào)被稱為量詞,用于指定匹配模式中前面字符的重復(fù)次數(shù)或出現(xiàn)情況。下面詳細(xì)介紹一些常用的量詞及其作用:
*(星號(hào)):表示匹配前面的字符零次或多次。
- 示例:ab* 可以匹配 "a", "ab", "abb", "abbb" 等。
+(加號(hào)):表示匹配前面的字符至少一次或多次。
- 示例:ab+ 可以匹配 "ab", "abb", "abbb" 等,但不能匹配 "a"。
?(問(wèn)號(hào)):表示匹配前面的字符零次或一次,即可選匹配。
- 示例:ab? 可以匹配 "a", "ab",但不能匹配 "abb"。
{n}:表示匹配前面的字符恰好 n 次。
- 示例:a{3} 可以匹配 "aaa",但不能匹配 "aa" 或 "aaaa"。
{n,}:表示匹配前面的字符至少 n 次。
- 示例:a{2,} 可以匹配 "aa", "aaa", "aaaa" 等。
{n,m}:表示匹配前面的字符至少 n 次,最多 m 次。
- 示例:a{2,4} 可以匹配 "aa", "aaa", "aaaa",但不能匹配 "a" 或 "aaaaa"。
這些量詞可以用于控制匹配模式中字符重復(fù)次數(shù)的范圍,使得正則表達(dá)式更加靈活和精確。在實(shí)際應(yīng)用中,根據(jù)具體的匹配需求和規(guī)則,可以靈活運(yùn)用這些量詞來(lái)構(gòu)建符合要求的正則表達(dá)式模式。
三.復(fù)雜樣例分析
對(duì)^[a-zA-Z][\\w]{5,17}@([A-Za-z0-9\\-]+\\.)+[A-Za-z]{2,6}$進(jìn)行分析
這個(gè)表達(dá)式是用來(lái)匹配電子郵件地址的。解讀如下:
- ^ 表示匹配輸入字符串的開(kāi)始位置
- [a-zA-Z] 表示第一個(gè)字符必須是字母,不區(qū)分大小寫(xiě)
- [\w]{5,17} 表示后面的字符可以是字母、數(shù)字或下劃線,且長(zhǎng)度在5到17之間
- @ 表示匹配@符號(hào)
- ([A-Za-Z0-9]+\\.)+ 表示匹配域名部分,可以包含字母、數(shù)字和短橫線,且必須以點(diǎn)號(hào)結(jié)尾,且可以重復(fù)多次
- [A-Za-z]{2,6} 表示匹配頂級(jí)域名,可以是2到6個(gè)字母
- $ 表示匹配輸入字符串的結(jié)尾位置
因此,這個(gè)表達(dá)式可以匹配形如"example123@example.com"的電子郵件地址。
附:Qt正則表達(dá)式(匹配正數(shù)、負(fù)數(shù)、浮點(diǎn)數(shù))
環(huán)境:QtCreator,功能:正則匹配正數(shù)、負(fù)數(shù)、浮點(diǎn)數(shù)
QString text="-10"; QString pattern("^(-?[0-9])|(-?\\d+)(\.\\d+)$"); //Qt匹配正數(shù)、負(fù)數(shù)、浮點(diǎn)數(shù) QRegExp rx(pattern); bool flag=rx.exactMatch(text.trimmed()); //trimmed() 去除字符串前后的空白字符 if(flag) qDebug()<<text;
解釋:
- -? : 表示一個(gè)或者零個(gè)負(fù)號(hào)。?表示重復(fù)前面的字符0次或者1次
- \d+:\d表示匹配一位數(shù)字,是轉(zhuǎn)義的字符,+表示前面的\d(數(shù)字)重復(fù)一次或者多次
- ^ :表示限定字符串的開(kāi)頭
- $ :限定字符串的結(jié)尾
- \. :表示匹配小數(shù)點(diǎn)
- \ :用來(lái)標(biāo)記轉(zhuǎn)義字符
- | : 表示或
總結(jié)
到此這篇關(guān)于Qt中正則表達(dá)式的常見(jiàn)用法的文章就介紹到這了,更多相關(guān)Qt正則表達(dá)式的用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解C語(yǔ)言實(shí)現(xiàn)空間索引四叉樹(shù)
本文主要介紹了用C語(yǔ)言實(shí)現(xiàn)四叉樹(shù),對(duì)算法感興趣的同學(xué),可以參考下,并且試驗(yàn)一下。2021-05-05Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(Windows
這篇文章主要介紹了Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(Windows)【真正的小白版】,圖文詳解介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03淺談C語(yǔ)言中的強(qiáng)符號(hào)、弱符號(hào)、強(qiáng)引用和弱引用
這篇文章主要介紹了C語(yǔ)言中的強(qiáng)符號(hào)、弱符號(hào)、強(qiáng)引用和弱引用的定義及相關(guān)內(nèi)容,非常的簡(jiǎn)單易懂,有需要的朋友可以參考下2014-10-10C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06C語(yǔ)言掃雷詳細(xì)代碼分步實(shí)現(xiàn)流程
掃雷是電腦上很經(jīng)典的游戲,特意去網(wǎng)上玩了一會(huì),幾次調(diào)試之后,發(fā)現(xiàn)這個(gè)比三子棋要復(fù)雜一些,尤其是空白展開(kāi)算法上和堵截玩家有的一拼,與實(shí)際游戲差別較大,不能使用光標(biāo),下面來(lái)詳解每一步分析2022-02-02