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) + ")");
 
————————————————
版权声明:本文为CSDN博主「weixin_43117674」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43117674/article/details/116244502

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值