Qt中正則表達(dá)式的常見(jiàn)用法(QRegularExpression類(lèi))
一.基本功能介紹:
在Qt中,可以使用QRegularExpression類(lèi)來(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)被稱(chēng)為量詞,用于指定匹配模式中前面字符的重復(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;
解釋?zhuān)?/p>
- -? : 表示一個(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ù)據(jù)讀取并存到數(shù)組中
下面小編就為大家?guī)?lái)一篇c語(yǔ)言實(shí)現(xiàn)把文件中數(shù)據(jù)讀取并存到數(shù)組中。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程
Microsoft Visual Studio 2022是Microsoft Visual Studio軟件的一個(gè)高版本,能夠編寫(xiě)和執(zhí)行C/C++代碼,具有強(qiáng)大的功能,是開(kāi)發(fā)C/C++程序的主流軟件,這篇文章主要介紹了Microsoft Visual Studio 2022的安裝與使用詳細(xì)教程2024-01-01
VSCode?IDE?配置環(huán)境過(guò)程解析
這篇文章主要介紹了VSCode?IDE?環(huán)境配置,這里說(shuō)的是僅使用?VSCode?創(chuàng)建C/CPP項(xiàng)目時(shí)的配置,VSCode?有代碼提示,?定位來(lái)源和各種快捷鍵,?更適合日常編碼工作,需要的朋友可以參考下2022-02-02
深入理解大數(shù)與高精度數(shù)的處理問(wèn)題
本篇文章是對(duì)大數(shù)與高精度數(shù)的處理進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05
C++實(shí)現(xiàn)選擇性排序(SelectionSort)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)選擇性排序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04

