Qt中的正则表达式类QRegExp
QRegExp是Qt的正则表达式类.Qt中有两个不同类的正则表达式.第一类为元字符.它表示一个或多个常量表达式.令一类为转义字符,它代表一个特殊字符.一.元字符.匹配任意单个字符.例如,1.3可能是1.后面跟任意字符,再... QRegExp是Qt的正则表达式类. 一.元字符 二.统配模式 三.转义序列 用正则表达式验证文本有效性你可以使用QRegExp::exactMatch来判断一个字符串是否符合一个pattern。 { void testRegexMatch() bool match = rx.exactMatch(“a=3″); match = rx.exactMatch(“a/2″); 用正则表达式提取数据你可以利用利用正则表达式从一个字符串里提取特定的字段或数据。例如,你可以用以下代码从”a=100″里提取”a”和”100″。 { void testRegexCapture() QString str(“a=100″); qDebug() << rx.cap(0); // a=100,text matching pattern qDebug() << rx.pos(0); // 0,position of the nth captured text 用正则表达式修改文本你可以把字符串中匹配的字符串替换成”一般字符串” s.replace(QRegExp(“(.*)=”),”b=”); QString s = ”a=100″; 或是把字符串中匹配的字符串替换”提取的字符串” <!-- Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ --> QString s = ”a=100″; 把正则表达式转换成C/C++ string的小工具没有Python的”"”或是C#的@。标准的正则表达式因为出现一些特殊字符,在C/C++代码里使用时,必须进行转换。例如:”(S+)s*=s*(S*)”必须转换成”(S+)s*=s*(S*)” Qt的SDK里包含一个很帮的GUI工具,可以方便我们进行这类转换并测试你的表达式。在Linux下,它的路径是/usr/local/Trolltech/Qt-4.5.3/examples/tools/regexp/regexp 用正则表达式验证文本有效性你可以使用QRegExp::exactMatch来判断一个字符串是否符合一个pattern。 { void testRegexMatch() bool match = rx.exactMatch(“a=3″); match = rx.exactMatch(“a/2″); 用正则表达式提取数据你可以利用利用正则表达式从一个字符串里提取特定的字段或数据。例如,你可以用以下代码从”a=100″里提取”a”和”100″。 { void testRegexCapture() QString str(“a=100″); QString s = ”a=100″; 或是把字符串中匹配的字符串替换”提取的字符串” s.replace(QRegExp(“(.*)=(.*)”),2 is rx.cap(2) QString s = ”a=100″; 把正则表达式转换成C/C++ string的小工具没有Python的”"”或是C#的@。标准的正则表达式因为出现一些特殊字符,在C/C++代码里使用时,必须进行转换。例如:”(S+)s*=s*(S*)”必须转换成”(S+)s*=s*(S*)” Qt的SDK里包含一个很帮的GUI工具,可以方便我们进行这类转换并测试你的表达式。在Linux下,它的路径是/usr/local/Trolltech/Qt-4.5.3/examples/tools/regexp/regexp 转自:http://blog.const.net.cn/a/8736.htm ---------------------------------------------------------------自学笔记--------------------------------------------------------------- 设置IP地址编辑框输入格式: QString qStrIPRegExp =
"((([1-9][0-9]?)|(1[0-9]?[0-9]?)|(2[0-4]?[0-9])|(25?[0-5])).){1}"
((0|([1-9][0-9]?)|(1[0-9]?[0-9]?)|(2[0-4]?[0-9])|(25?[0-5])).){2}(0|([1-9][0-9]?)|(1[0-9]?[0-9]?)|(2[0-4]?[0-9])|(25?[0-5])){1}";
ui->IPAddress->setValidator(new QRegExpValidator(QRegExp(qStrIPRegExp),0));
IP地址正则表达式优化: IP: ((25[0-5]|2[0-4]d|[01]?dd?).){3}(25d|2[0-4]d|[01]?dd?) Ps:IP地址中每个数字都不能大于255. 01.02.03.04 这样前面带有0的数字,是不是正确的IP地址呢? 答案: 是的,IP 地址里的数字可以包含有前导 0 (leading zeroes). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |