qt之正規表示式

2021-06-04 10:18:37 字數 2666 閱讀 3122

qregexp是qt的正規表示式類.

qt中有兩個不同類的正規表示式.

第一類為元字元.它表示乙個或多個常量表示式.

令一類為 轉義字元,它代表乙個特殊字元.

一.元字元

.  匹配任意單個字元.例如, 1.3 可能是1. 後面跟任意字元,再跟3

^ 匹配字串首. 例如, ^12可能是123,但不能是312

$  配字串尾. 例如, 12$可以是312, 當不能是 123

匹配括號內輸入的任意字元.[123]可以為1, 2 或3

*  匹配任意數量的前導字元. 例如, 1*2可以為任意數量個1(甚至沒有), 後面跟乙個2

+ 匹配至少乙個前導字元. 例如, 1+2必須為乙個或多個1, 後跟乙個2

?  匹配乙個前導字元或為空. 例如 1?2可以為2或這12

二.統配模式

通過 qregexp::setpatternsyntax(qregexp::wildcard);可以將元字元設定為統配模式.在統配模式下,只有3個元字 符可以使用.他們的功能沒有變化.

? 匹配任意單個字元, 例如, 1?2可以為1,後面跟任意單個字元, 再跟2

* 匹配任意乙個字串行. 例如, 1*2, 可以為1, 後面跟任意數量的字元, 再跟乙個2

匹配乙個定義的字元集合. 例如, [a-za-z\.]可以匹配 a到z之間任意乙個字元和.  [^a]匹配出小寫a以外的字元.

三.轉義序列

\. 匹配」.」

\^ 匹配」^」

\$ 匹配」$」

\[ 匹配"["

\] 匹配」]」

\* 匹配」*」

\+ 匹配」+」

\? 匹配」?」

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

\t 製表符號

\n 換行符號

\r  回車符鉿

\s  任意空格

\xnn 匹配16進製為nn的字元

\0nn  匹配8進製的nn字元

這些表示式均以\開始, 與c++的轉義字元相同,所以為了定義qregexp中的乙個轉義序列,

需要在前面新增兩個\\

你可以使用qregexp::exactmatch來判斷乙個字串是否符合乙個pattern。

void testregexmatch()

你可以利用利用正規表示式從乙個字串裡提取特定的字段或資料。例如,你可以用以下**從」a=100″裡提取」a」和」100″。

void testregexcapture()

}你可以把字串中匹配的字串替換成」一般字串」

qstring s = 」a=100″;

s.replace(qregexp(「(.*)=」), 」b=」);

qdebug() << s;                          // b=100

或是把字串中匹配的字串替換」提取的字串」

qstring s = 」a=100″;

s.replace(qregexp(「(.*)=(.*)」), 」\\1\\2=\\2″);  // \1 is rx.cap(1), \2 is rx.cap(2)

qdebug() << s;                                  // a100=100

沒有python的」"」或是c#的@。標準的正規表示式因為出現一些特殊字元,在c/c++**裡使用時,必須進行轉換。例如:」(\s+)\s*=\s*(\s*)」必須轉換成」(\\s+)\\s*=\\s*(\\s*)」

qt的sdk裡包含乙個很幫的gui工具,可以方便我們進行這類轉換並測試你的表示式。在linux下,它的路徑是/usr/local/trolltech/qt-4.5.3/examples/tools/regexp/regexp

你可以使用qregexp::exactmatch來判斷乙個字串是否符合乙個pattern。

void testregexmatch()

你可以利用利用正規表示式從乙個字串裡提取特定的字段或資料。例如,你可以用以下**從」a=100″裡提取」a」和」100″。

void testregexcapture()

}你可以把字串中匹配的字串替換成」一般字串」

qstring s = 」a=100″;

s.replace(qregexp(「(.*)=」), 」b=」);

qdebug() << s;                          // b=100

或是把字串中匹配的字串替換」提取的字串」

qstring s = 」a=100″;

s.replace(qregexp(「(.*)=(.*)」), 」\\1\\2=\\2″);  // \1 is rx.cap(1), \2 is rx.cap(2)

qdebug() << s;                                  // a100=100

沒有python的」"」或是c#的@。標準的正規表示式因為出現一些特殊字元,在c/c++**裡使用時,必須進行轉換。例如:」(\s+)\s*=\s*(\s*)」必須轉換成」(\\s+)\\s*=\\s*(\\s*)」

qt的sdk裡包含乙個很幫的gui工具,可以方便我們進行這類轉換並測試你的表示式。在linux下,它的路徑是/usr/local/trolltech/qt-4.5.3/examples/tools/regexp/regexp

**:

qt之正規表示式

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

Qt之正規表示式

qt裡對大名鼎鼎的正規表示式有很好的支援,使用qregexp類,你可以非常快的完成對文字的驗證 資料提取 替換。qt的sdk包裡還提供了regexp的gui小工具,方便你對正規表示式的驗證。本文在qt4.5.3下驗證通過。你可以使用qregexp exactmatch來判斷乙個字串是否符合乙個pat...

Qt之正規表示式

在用寫程式的時候,往往會用到正規表示式,不僅僅是web開發,mfc gtk qt開發的圖形介面也是如此,只要了解其原理,語法也都大相徑庭!0 lineedit非大寫輸入時,顯示 no mathch qregexp passwdreg a z if passwdreg.exactmatch pwded...