亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Qt中正則表達(dá)式的常見(jiàn)用法(QRegularExpression類)

 更新時(shí)間:2024年05月13日 10:50:43   作者:激昂~逐流  
正則表達(dá)式即一個(gè)文本匹配字符串的一種模式,Qt中使用QRegExp類進(jìn)行模式匹配,下面這篇文章主要給大家介紹了關(guān)于Qt中正則表達(dá)式的常見(jiàn)用法,文中介紹的是QRegularExpression類的相關(guān)資料,需要的朋友可以參考下

一.基本功能介紹: 

在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ù)

    本文主要介紹了用C語(yǔ)言實(shí)現(xiàn)四叉樹(shù),對(duì)算法感興趣的同學(xué),可以參考下,并且試驗(yàn)一下。
    2021-05-05
  • Visual 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

    這篇文章主要介紹了Visual Studio Code (vscode) 配置C、C++環(huán)境/編寫(xiě)運(yùn)行C、C++的教程詳解(Windows)【真正的小白版】,圖文詳解介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C++編寫(xiě)實(shí)現(xiàn)圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 深度剖析C語(yǔ)言結(jié)構(gòu)體

    深度剖析C語(yǔ)言結(jié)構(gòu)體

    今天小編就為大家分享一篇關(guān)于深度剖析C語(yǔ)言結(jié)構(gòu)體,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-12-12
  • C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    C++實(shí)現(xiàn)并行計(jì)算的兩種方式

    本文介紹了使用C++實(shí)現(xiàn)并行計(jì)算的兩種方式,包括OpenMP和MPI,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-03-03
  • 淺談C語(yǔ)言中的強(qiáng)符號(hào)、弱符號(hào)、強(qiáng)引用和弱引用

    淺談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-10
  • C語(yǔ)言線性表全面梳理操作方法

    C語(yǔ)言線性表全面梳理操作方法

    線性表,數(shù)據(jù)結(jié)構(gòu)中最簡(jiǎn)單的一種存儲(chǔ)結(jié)構(gòu),專門用于存儲(chǔ)邏輯關(guān)系為"一對(duì)一"的數(shù)據(jù)。線性表是基于數(shù)據(jù)在實(shí)際物理空間中的存儲(chǔ)狀態(tài),又可細(xì)分為順序表(順序存儲(chǔ)結(jié)構(gòu))和鏈表
    2022-04-04
  • C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊課程設(shè)計(jì)

    C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊課程設(shè)計(jì)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)俄羅斯方塊課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • C語(yǔ)言制作掃雷游戲(圖形庫(kù))

    C語(yǔ)言制作掃雷游戲(圖形庫(kù))

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言制作掃雷游戲,結(jié)合圖形庫(kù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C語(yǔ)言掃雷詳細(xì)代碼分步實(shí)現(xiàn)流程

    C語(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

最新評(píng)論