QRegExp
QRegExp
qt正則
構造函數
- QRegExp(const QString &pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, QRegExp::PatternSyntax syntax = RegExp)
cs指定是否區分大小寫。默認區分大小寫,
syntax 指定匹配模式, 有以下幾種匹配模式
| QRegExp::RegExp | 類似Perl的模式匹配語法 |
| QRegExp::RegExp2 | 類似于RegExp,但帶有貪婪的量詞。 (在Qt 4.2中引入。) |
| QRegExp::Wildcard | 這提供了一種簡單的模式匹配語法,類似于shell(命令解釋器)用于“文件遍歷”的語法 |
| QRegExp::WildcardUnix | 這類似于通配符,但具有Unix Shell的行為。 通配符可以使用字符“ \”進行轉義。 |
| QRegExp::FixedString | 模式是固定的字符串。 這等效于在字符串上使用RegExp模式,在該字符串中,所有所有元字符都使用escape()進行轉義。 |
| QRegExp::W3CXmlSchema11 | 模式是W3C XML Schema 1.1規范定義的正則表達式。 |
?
?
?
?
?
?
?
?
?
??
?
?C ++編譯器將字符串中的反斜杠轉換。 要在正則表達式中包含\,請輸入兩次,即\\。 要匹配反斜杠字符本身,請輸入四次,即\\\\。
常用的正則匹配符
| \d | 匹配一個數字 |
| \D | 匹配一個非數字。 |
| \s | 匹配空白字符 |
| \S | 匹配非空白字符 |
| \w | 匹配單詞字符(字母數字下劃線“ _”或標記)。 |
| \W | 匹配非單詞字符。 |
| ^ | 尖號表示字符串的開頭。 如果要匹配文字^,則必須通過寫\\ ^對其進行轉義。 |
| $ | 表示字符串的結尾 |
| \b | 單詞邊界。 |
| \B | 非單詞邊界。 |
| (?=E) | 積極向前。 如果表達式此時在regexp中匹配,則此斷言為true。 例如,const(?= \ s + char)每次與“ const”匹配時都跟“ char”,例如“ static const char *”。 (與const \ s + char比較,后者匹配“ static const char *”。) |
| (?!E) | 負前瞻。 例如,const(?!\ s + char)與'const'匹配,除非后面跟有'char'。 |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
- void QRegExp::setMinimal(bool minimal)
啟用或禁用最小匹配。 如果minimum為false,則匹配為貪婪
- bool QRegExp::isValid() const
如果正則表達式有效,則返回true;否則,返回true。 否則返回false。 無效的正則表達式永遠不會匹配。
- ?void QRegExp::setPattern(const QString &pattern)
將模式字符串設置為pattern。 區分大小寫,通配符和最小匹配選項不變。
- ?QString QRegExp::cap(int nth = 0) const
返回第n個子表達式捕獲的文本。 整個匹配的索引為0,帶括號的子表達式的索引從1開始(不包括括號)
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
返回正則表達式中包含的捕獲數。?
- QStringList QRegExp::capturedTexts() const?
返回捕獲的文本字符串的列表。列表中的第一個字符串是整個匹配的字符串。 每個后續列表元素都包含一個與正則表達式的(捕獲)子表達式匹配的字符串。
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
返回最后匹配的字符串的長度;如果不匹配,則返回-1。
- int QRegExp::indexIn(const QString &str, int offset = 0, QRegExp::CaretMode caretMode = CaretAtZero) const
嘗試從位置偏移量(默認為0)中找到str中的匹配項。 如果offset為-1,則搜索從最后一個字符開始
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)
返回帶有反斜杠轉義的每個正則表達式特殊字符的字符串str。 特殊字符為$,(,),*,+,。,?,[、、],^,{,|。 和 }。?
s1 = QRegExp::escape("bingo"); // s1 == "bingo" s2 = QRegExp::escape("f(x)"); // s2 == "f\\(x\\)" //此函數對于動態構造正則表達式模式很有用:QRegExp rx("(" + QRegExp::escape(name) +"|" + QRegExp::escape(alias) + ")");?
總結
- 上一篇: 算法练习之leetcode两数相加(1)
- 下一篇: 面试day1