日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QRegExp

發(fā)布時(shí)間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QRegExp 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

QRegExp

qt正則

構(gòu)造函數(shù)

  • QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, QRegExp::PatternSyntax syntax = RegExp)

cs指定是否區(qū)分大小寫。默認(rèn)區(qū)分大小寫,

syntax 指定匹配模式, 有以下幾種匹配模式

QRegExp::PatternSyntax描述

QRegExp::RegExp

類似Perl的模式匹配語法

QRegExp::RegExp2

類似于RegExp,但帶有貪婪的量詞。 (在Qt 4.2中引入。)

QRegExp::Wildcard

這提供了一種簡(jiǎn)單的模式匹配語法,類似于shell(命令解釋器)用于“文件遍歷”的語法

QRegExp::WildcardUnix

這類似于通配符,但具有Unix Shell的行為。 通配符可以使用字符“ \”進(jìn)行轉(zhuǎn)義。

QRegExp::FixedString

模式是固定的字符串。 這等效于在字符串上使用RegExp模式,在該字符串中,所有所有元字符都使用escape()進(jìn)行轉(zhuǎn)義。

QRegExp::W3CXmlSchema11

模式是W3C XML Schema 1.1規(guī)范定義的正則表達(dá)式。

?

?

?

?

?

?

?

?

?

??

?

?C ++編譯器將字符串中的反斜杠轉(zhuǎn)換。 要在正則表達(dá)式中包含\,請(qǐng)輸入兩次,即\\。 要匹配反斜杠字符本身,請(qǐng)輸入四次,即\\\\。

常用的正則匹配符

\d

匹配一個(gè)數(shù)字

\D

匹配一個(gè)非數(shù)字。
\s匹配空白字符
\S匹配非空白字符

\w

匹配單詞字符(字母數(shù)字下劃線“ _”或標(biāo)記)。

\W

匹配非單詞字符。

^

尖號(hào)表示字符串的開頭。 如果要匹配文字^,則必須通過寫\\ ^對(duì)其進(jìn)行轉(zhuǎn)義。

$

表示字符串的結(jié)尾

\b

單詞邊界。

\B

非單詞邊界。

(?=E)

積極向前。 如果表達(dá)式此時(shí)在regexp中匹配,則此斷言為true。 例如,const(?= \ s + char)每次與“ const”匹配時(shí)都跟“ char”,例如“ static const char *”。 (與const \ s + char比較,后者匹配“ static const char *”。)

(?!E)

負(fù)前瞻。 例如,const(?!\ s + char)與'const'匹配,除非后面跟有'char'。

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

  • void QRegExp::setMinimal(bool minimal)

啟用或禁用最小匹配。 如果minimum為false,則匹配為貪婪

  • bool QRegExp::isValid() const

如果正則表達(dá)式有效,則返回true;否則,返回true。 否則返回false。 無效的正則表達(dá)式永遠(yuǎn)不會(huì)匹配。

  • ?void QRegExp::setPattern(const QString &pattern)

將模式字符串設(shè)置為pattern。 區(qū)分大小寫,通配符和最小匹配選項(xiàng)不變。

  • ?QString QRegExp::cap(int nth = 0) const

返回第n個(gè)子表達(dá)式捕獲的文本。 整個(gè)匹配的索引為0,帶括號(hào)的子表達(dá)式的索引從1開始(不包括括號(hào))

QRegExp rxlen("(\\d+)(?:\\s*)(cm|inch)"); int pos = rxlen.indexIn("Length: 189cm"); if (pos > -1) {QString value = rxlen.cap(1); // "189"QString unit = rxlen.cap(2); // "cm"// ... }
  • int QRegExp::captureCount() const

返回正則表達(dá)式中包含的捕獲數(shù)。?

  • QStringList QRegExp::capturedTexts() const?

返回捕獲的文本字符串的列表。列表中的第一個(gè)字符串是整個(gè)匹配的字符串。 每個(gè)后續(xù)列表元素都包含一個(gè)與正則表達(dá)式的(捕獲)子表達(dá)式匹配的字符串。

QRegExp rx("(\\d+)(\\s*)(cm|inch(es)?)");int pos = rx.indexIn("Length: 36 inches");QStringList list = rx.capturedTexts();// list is now ("36 inches", "36", " ", "inches", "es")
  • ?int QRegExp::matchedLength() const

返回最后匹配的字符串的長(zhǎng)度;如果不匹配,則返回-1。

  • int QRegExp::indexIn(const QString &str, int offset = 0, QRegExp::CaretMode caretMode = CaretAtZero) const

嘗試從位置偏移量(默認(rèn)為0)中找到str中的匹配項(xiàng)。 如果offset為-1,則搜索從最后一個(gè)字符開始

QRegExp rx("(\\d+)"); QString str = "Offsets: 12 14 99 231 7"; QStringList list; int pos = 0;while ((pos = rx.indexIn(str, pos)) != -1) {list << rx.cap(1);pos += rx.matchedLength(); } // list: ["12", "14", "99", "231", "7"]
  • int QRegExp::pos(int nth = 0) const

返回捕獲的文本在搜索字符串中的位置。

QRegExp rx("/([a-z]+)/([a-z]+)");rx.indexIn("Output /dev/null"); // returns 7 (position of /dev/null)rx.pos(0); // returns 7 (position of /dev/null)rx.pos(1); // returns 8 (position of dev)rx.pos(2); // returns 12 (position of null)
  • [static] QString QRegExp::escape(const QString &str)

返回帶有反斜杠轉(zhuǎn)義的每個(gè)正則表達(dá)式特殊字符的字符串str。 特殊字符為$,(,),*,+,。,?,[、、],^,{,|。 和 }。?

s1 = QRegExp::escape("bingo"); // s1 == "bingo" s2 = QRegExp::escape("f(x)"); // s2 == "f\\(x\\)" //此函數(shù)對(duì)于動(dòng)態(tài)構(gòu)造正則表達(dá)式模式很有用:QRegExp rx("(" + QRegExp::escape(name) +"|" + QRegExp::escape(alias) + ")");

?

總結(jié)

以上是生活随笔為你收集整理的QRegExp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。