QRegExp
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::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é)
- 上一篇: 算法练习之leetcode两数相加(1)
- 下一篇: 面试day1