欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

QRegExp

发布时间:2025/3/15 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 QRegExp 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

QRegExp

qt正则

构造函数

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

cs指定是否区分大小写。默认区分大小写,

syntax 指定匹配模式, 有以下几种匹配模式

QRegExp::PatternSyntax描述

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) + ")");

 

总结

以上是生活随笔为你收集整理的QRegExp的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。