QT 正規表示式的使用方法

2021-10-09 04:06:05 字數 3127 閱讀 1270

正規表示式用於字串處理是很方便的,但是其規則往往容易學習基礎,又很容易忘記,遂將遇到的問題和收集到的資料總結如下。如果對你有幫助,記得點讚、收藏、關注三連哦!

1.正規表示式的基礎規則

表示式說明

^指字串的開頭

$指字串的結尾

.匹配除了換行符意外的其他字元

?表示匹配0次或一次

+表示匹配至少一次

*表示匹配0次或任意次

|或關係,表示左右兩個表示式匹配任意乙個都可以。如正則式為tom | jerry,匹配的字串為tom and jerry,將會匹配到兩個字串,即tom和jerry。

\\指\本身,而非轉義符。因為\在程式裡轉義的含義,所以如果要匹配\則必須使用\\。需要注意的一點是,外界的string輸入的\在程式裡其實是以\\的形式表現得,所以和正常轉義一樣;但是在qt程式設計時,單個\指轉義,所以要實現匹配數字的功能,也就是匹配\d,則正規表示式形式要先將\轉義,所以其表達形式為\\d。

\s匹配任意空白字元

\s匹配任意非空白字元

\d任意數字

\d匹配任意非數字

\w任意單字字元(字母、數字或下劃線)

\w匹配任意非單字字元

\b用以匹配單詞邊界,即一部分是\w範圍,而另一部分是非、w範圍,如@@@bbb,匹配結果為@b

用以包含一系列字元

[abc]

表示abc三個單獨的字元

[a-z]

表示從a到z26個小寫字母

[a-z]

表示從a到z26個大寫字母

[0-9]

表示從0到9的數字

[a-za-z0-9]

表示所有大寫小寫字母和數字的集合

[^]用以包含除中括號之內字元的其他字元

[^abc]

表示除abc之外的其他字元

{}修飾匹配字元長度的符號,需要匹配本身需要使用轉義

指匹配2個字元

指匹配至少兩個字元

指匹配2~6個字元

()表示乙個子表示式,括號內內容作為乙個子匹配。

(d+)abc

即匹配至少乙個d和abc

\***

編號在0~255範圍的字元

\u***x

任何字元都可以使用\u再加上其編號的4位十六進製制數表示

2.貪婪模式(盡可能匹配)和非貪婪模式(最小匹配)

正規表示式的匹配預設是貪婪的,也就是盡可能的匹配,而這個匹配的次數可以使用上述介紹的{}、?、*、+進行限制。如果待檢測文字為xyyyxyyyx,匹配結果舉例如下:

正則式匹配結果

(x)(\w+)

xyyyxyyyx

(x)(\w+)(x)

xyyyxyyyx,也就是\w+匹配了yyyxyyy,其實其可以匹配到yyyxyyyx,只是為了讓表示式成功匹配,其讓出了最後的x。

可以通過一些次數限制來改變這一結果,如使用?來進行盡可能少的匹配,即為非貪婪模式。與貪婪模式相似,如果匹配不成功,非貪婪模式會最小限度的再匹配一下。舉例如下:

正則式匹配結果

(x)(\w+?)

xy(x)(\w+?)(x)

xyyyx,為了讓整個表示式成功,所以\x+?匹配了yyy

3.反向引用(\1,\2)

()內的表示式在匹配時,匹配結果會被正規表示式的匹配演算法記錄下來,是可以單獨再使用的,如正則式為(\w)\1,當待檢測字串為aa bbbb abcdefg ccccc 111121111 999999999時,匹配結果第乙個為ccccc,第二個結果為999999999。

4.常用表示式

匹配目標

正則式匹配非負整數(正整數+0)

^\d+$

匹配正整數

^[0-9]*[1-9][0-9]*$

匹配非正整數(負整數+0)

^((-\d+)|(0+))$

匹配負整數

^-[0-9]*[1-9][0-9]*$

匹配整數

^-?\d+$

匹配非負浮點數(正浮點數 + 0)

^\d+(\.\d+)?$

匹配正浮點數

^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

匹配非正浮點數(負浮點數 + 0)

^((-\d+(\.\d+)?)|(0+(\.0+)?))$

匹配負浮點數

^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$

匹配浮點數

^(-?\d+)(\.\d+)?$

匹配由26個英文本母組成的字串

^[a-za-z]+$

匹配由26個英文本母的大寫組成的字串

^[a-z]+$

匹配由26個英文本母的小寫組成的字串

^[a-z]+$

匹配由數字和26個英文本母組成的字串

^[a-za-z0-9]+$

匹配由數字、26個英文本母或者下劃線組成的字串

^\w+$

匹配email位址

^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

匹配url

^[a-za-z]+:(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$

匹配html tag

<\s*(\s+)(\s[^>]*)?>(.*?)<\s*\\\1\s*>

數字,英文大小寫字母,下劃線,漢字

^[a-za-z0-9_\u4e00-\u9fa5\\w]+$

5.qt正規表示式的使用方法

//需要的標頭檔案

#include //正則類

qregularexpression exp;

exp.setpattern(」\\d「);

qstring aaa = 「abcd」;

qregularexpressionmatch match = codeformat.exp.match(aaa);

if(match.hasmatch()==true)else if(lastindex >0)-\x

1. qt正規表示式

2.utf-8漢字正規表示式

正規表示式的使用方法

裡面填寫乙個子表示式 s 匹配空格,比如 s update 可以匹配前面含有零個或多個空格的update 萬用字元,匹配除 n換行符之外的任意字元,包括空格 匹配零次或多次前面的表示式 匹配一次或多次前面的表示式 匹配零次或一次前面的表示式,或者指定乙個非貪婪限定符 轉移字元 指明兩項之間的乙個選擇...

正規表示式的使用方法

正規表示式的建立var 變數名 正規表示式 修飾符 var 變數名 newregexp 正規表示式 修飾符 常用符號 符號詳情 匹配括號中全部字元 匹配括號中乙個字元 如 0 9 a z a z 之間 匹配開始位置 當 在 內使用時是取反 匹配束位置 d匹配數字 d匹配非數字 w匹配字元 字元中包括...

Qt使用正規表示式

qt中使用正規表示式的類是qregexp 標頭檔案 先定義正則規則 正則規則跟其他的語言一樣樣 qregexp rx a za z rx.indexin qstring fwlfwiefwf wefwefwef 返回的是匹配對的第乙個下標位置 如果沒有匹配的話返回的是 1 所以只需要判斷返回值是不是...