Qt物件模型與容器類之正規表示式

2021-09-22 21:41:53 字數 4068 閱讀 1583

正規表示式:

正規表示式就是在乙個文字中匹配子字串的一種模式(

pattern

),它可以簡寫為

regexp

。乙個regexp

主要應用在以下幾個方面:

驗證。regexp

可以測試乙個子字串是否符合一些規範。

搜尋。regexp

提供了比簡單字串匹配更強大的模式匹配。

查詢和替換。

regexp

可以使用乙個不同的字串替換所有匹配的子字串。

字串分割。

regexp

可以識別在**進行字串分割。

regexps由表示式、量詞和斷言組成。

正規表示式中的字元和字符集縮寫

元素

含義c

乙個字元代表它本身,除非這個字元有特殊的

regexp

含義。 \c

跟在反斜槓後面的字元匹配字元本身,但是本表中下面指定的這些字元除外。 \a

匹配ascii

的振鈴(

bel,

0x07)

\f 匹配ascii

的換頁(ff,

0x0c)

\n 匹配ascii

的換行(lf,

0x0a)

\r 匹配ascii

的回車(cr,

0x0d)

\t 匹配ascii

的水平製表符(ht,

0x09)

\v 匹配ascii

的垂直製表符(vt,

0x0b)

\xhhhh 匹配

unicode

字元對應的十六進製制數

hhhh

(0x0000~0xffff

之間)

\0ooo

匹配八進位制

ascii/latin1

字元ooo(

在0~377之間)

.(點)

匹配任意字元(包括新航) \d

匹配乙個數字 \d

匹配乙個非數字 \s

匹配額乙個空白字元,包括

」\t」

、」\n」

、」\v」

、」\f」

、」\r」和」」

\s匹配乙個非空白字元 \w

匹配乙個單詞字元,包括任意乙個字母或數字或下劃線,即

a~z,

a~z,0~9

,中任意乙個 \w

匹配乙個非單詞字元 \n

第n個反向引用。例如、\1、

\2等正規表示式中的量詞

量詞

含義e?

匹配0次或者

1次,表明

e是可選的

,e?等價於e

e+ 匹配1

次或者多次,

e+等價於e

e* 匹配0

次或者多次,等價於e

e 匹配n

次,等價於e

e 匹配至少n次

e匹配之多

m次,等價於e

e 匹配之多

n次,至多m次

正規表示式中的斷言

斷言

含義^

標誌著字串的開始。如果要匹配

」^」就要使用

」\\」 $

標誌著字串的結尾。如果要匹配

」$」就要使用

」\\$」 \b

乙個單詞的邊界 \b

乙個非單詞的邊界,當

」\b」

為false,

它為true

(?=e)

表示式後面經跟著

e才匹配。

?!e表示式後面沒有經跟著

e才匹配。

萬用字元

字元

含義c

任意字元,表示字元本身 ?

匹配任意乙個字元,類似於

regexp

中的」.」 *

匹配0個或者多個任意的字元,類似於

regexp

中的」. *」

[...]

在方括號中的字符集,與

regexp

中的類似

正規表示式語法

常量

描述

qregexp::reexp

類似於perl

的模式匹配語法,這個是預設語法

qregexp::reexp2

類似於regexp,

不過時一種貪婪匹配語法

qregexp::wildcard

一種簡單的模式匹配語法

qregexp::wildcardunix 與

widcard

類似,但是使用

unix shell

的行為

qregexp::fixedstring

使用字元原意,不使用任何的轉義字元

qregexp::w3cxmlschema11 在

w3c xml schenma 1.1

規範中定義的一種正規表示式

文字捕獲:

在regexp

中使用括號可以使一些元素組合在一起,這樣既可以對它們進行量化,也可以捕獲它們。

新的qregularexpression:

在qregularexpression

中,乙個正規表示式由倆部分構成:

乙個模式字串

;一組模式選項,模式選項用來更改字串的含義

;模式選項

常量

描述

qregularexpression::nopatternoption

沒有設定模式選項

qregularexpression::caseinsensitiveoption

匹配目標字串時,不區分大小寫

qregularexpression::dotmatcheseverythingoption

「.」匹配任意字元,包括換行符

qregularexpression::multilineoption 「」

匹配字串的開始和新航的開始,

」$」匹配任意行的結尾

qregularexpression::extendedpatternsyntaxoption

忽略所有空白,

」#」後面的內容作為注釋(可用換行符結束注釋),用於提高可讀性

qregularexpression::invertedgreedinessoption

反轉量詞的貪婪

qregularexpression::dontcaptureoption

本命名捕獲組不捕獲子字串、命名捕獲組正常執行

qregularexpression::useunicodepropertiesoption \w

、\d等字元類不再只匹配

ascii

字元,而是匹配相應

unicode

屬性的任意字元

qregularexpression::optimizeonfirstusageoption

正規表示式在第一次使用時被優化,而不再是用幾次之後才優化

qregularexpression::dontautomaticallyoptimizeoption

正規表示式預設在使用一定次數後會自動優化,使用該選項可以防止此類優化,這樣就可以避免

cpu和記憶體使用率出現不可**的峰值

Qt的容器類之容器,迭代器

qt中的容器被分為兩個大類 容器元素是乙個值的,比如qvector,以及容器元 素是乙個 key,value 對的,比如qmap。1 第一大類中,qvector將其所有元素存放在一塊連續的記憶體中。隨機訪問的速度很快,但是插入 刪除操作很慢。qstack是qvector的子類,實現棧的功能。除了具有...

QT容器類(三) 之 QMap QHash

一 介紹 qmap qmap中的key value對是公升序排列的 插入和刪除操作中都可以使用運算子,其下標為key 為避免建立不必要的空值,推薦用vlaue 而不是從qmap中取值。qmap中的k和t除了要求具備預設建構函式 拷貝建構函式和賦值運算子外,k還必須支援operator keys va...

Qt的容器類之通用演算法

我們經常對不同型別的容器做類似的操作。由此而生了通用演算法。qt實現了其中最常用的13個。下面對列舉這些通用演算法 1 排序 qsort使用快速排序演算法,將乙個元素序列排成公升序。qstablesort也能完成類似的排序操作,但是能夠確保值相等的元素在排序的前後相對順序不變。2 搜尋 對於有序容器...