正規表示式用於字串處理是很方便的,但是其規則往往容易學習基礎,又很容易忘記,遂將遇到的問題和收集到的資料總結如下。如果對你有幫助,記得點讚、收藏、關注三連哦!
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 所以只需要判斷返回值是不是...