Qt 之 QLineEdit 和 QRegExp

来源:互联网 发布:mysql update 编辑:程序博客网 时间:2024/05/15 16:11

先列出几个问题待解决:

1、QRegExp使用规则? 它和QLineEdit的inputMask之间的关系?

2、QLineEdit如何可以初始化对象显示一行提示,当用户点击输入框的时候自动清除?

3、如何使用QRegExp来模拟setValidtor的效果?

————————————————————————————————

QRegExp:

简介:用来描述Qt规则表达式的一种现有语言,基于Perl 规则表达式建立的。完全支持unicode字符。既可以用于复杂的模式,也可一用shell命令中的wildcard的简单模式。QRegExp的语法可以通过setPatternSyntax()函数来切换

四种功能:Validation, Searching, Search And Replace, String Spliting

五种语法:gExp, RegExp2, Wildcard, WildcardUnix, FixedString, W3CXmlSchema11


建立于 表达式、数量以及断言之上


一般而言,规则表达式不能应用于检查括号匹配,因为如果有嵌套,而调用这又不清楚嵌套有几层,那么是不可能写出正确匹配的表达式的

注意断言^和$的使用,表示字符串的开头和结束


Captuing Text:我们可以使用()来捕捉匹配字符串,然后通过cap()或者capturedTexts来获取匹配到的字符。这里有个很有用的语法,就是当我们打算匹配某个子串但又想忽略掉一些内容的时候,我们就可以使用"(:?)"来选择忽略掉的内容


#include <QApplication>#include <QRegExp>#include <QDebug>int main(int argc, char *argv[]){    QApplication app(argc, argv);    QRegExp reg("(\\w+)(?:.Chen)");    reg.indexIn("myname is Tovards.Chen");    qDebug() << reg.cap(0) << "=>" <<reg.cap(1);    return app.exec();}

还可以使用\1表示和第一个表达式匹配的内容相同的字符串

#include <QApplication>#include <QRegExp>#include <QDebug>#include <QString>
int main(int argc, char *argv[]){    QRegExp reg("([0-9]{1,3}).(\\1)");    reg.exactMatch("192.192.6.142");    qDebug() << reg.cap(1);    qDebug() << reg.cap(2);    return 0; }

输出:

“192”

“192”





原创粉丝点击