Qt算法与正则表达式

4 篇文章 0 订阅
  • Qt常用算法:
    • 函数qAbs(value),返回value型数值的绝对值。
    • qMax(a,b):函数qMax(a,b)返回两个数值中的最大值。
    • qRound(b):函数qRound()返回与一个浮点数最接近的整数值,即四舍五入返回一个整数值。
    • qSwap(a,b):函数qSwap()交换两数的值。

例如我们可在main.cpp中主函数main中加入如下内容:

double b=-11.3,c=9.6;

double d=qAbs(b);

double max=qMax(c,d);

int cn=qRound(c);

int dn=qRound(d);

qDebug()<<"b="<<b;

qDebug()<<"c="<<c;

qDebug()<<"d=qAbs(b)= "<<d;

qDebug()<<"qMax(c,d)= "<<max;

qDebug()<<"cn=qRound(c)= "<<cn;

qDebug()<<"dn=qRound(d)= "<<dn;

qSwap(cn,dn);

qDebug()<<"qSwap(cn,dn):"<<"cn="<<cn<<"dn="<<dn;
  • 基本的正则表达式

使用正则表达式可以方便的完成处理字符串的一些操作,如验证、查找、替换和分割等。Qt的QRegExp类是正则表达式的表示类。它基于Perl的正则表达式语言,完全支持Unicode,正则表达式由表达式(expressions)、量词(quantifiers)和断言(assertions)组成。

  1. 最简单的表达式是一个字符。字符集可以使用表达式如“[AEIOU]”,表示匹配所有的大写元音字母;使用“[^AEIOU]”,表示匹配所有非元音字母,即辅音字母;连续的字符集可以使用表达式如“[az]”,表示匹配所有的小写英文字母。
  2. 量词说明表达式出现的次数,如“x[1,2]”表示“x”可以至少有一个,至多有两个。 在计算机语言中,标识符通常要求以字母或下画线(也称下画线)开头,后面可以是字母、数字和下画线。满足条件的标识符表示为:

“[AZaz_]+[AZaz_09]*”其中,表达式中的“+”表示“[AZaz_]”至少出现一次,可以出 现多次;“*”表示“[AZaz_09]”可以出现零次或多次。

正则表达式的量词表:

量词

含义

E?

匹配0次或1次

E+

匹配1次或多次

E*

匹配0次或多次

E[n]

匹配n次

E[n,]

至少匹配n次

E[,m]

最多匹配m次

E[n,m]

最少匹配n次,最多匹配m次

“^”“$”“\b”都是正则表达式的断言,正则表达式的断言表:

符号

含义

^

表示在字符串开头进行匹配

$

表示在字符串结尾进行匹配

\b

单词边界

\B

非单词边界

(?=E)

表示表达式后紧随E才匹配

(?!E)

表示表达式后不紧随E才匹配

下面在Qt中使用一个正则表达式来看效果:

首先在设计中加入一个QLineEdit文本框用做验证输入

QLineEdit *lineEdit = new QLineEdit;

QRegExp regexp("[A-Za-z][0-9][1-9]{0,2}");

//匹配开头为字母,第二个为数字,紧接着的0-2个为非零数字

//setValidator对输入设置约束

 lineEdit->setValidator(new QRegExpValidator(regexp));

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
QT6中,可以使用QRegularExpression类来处理正则表达式。为了使用正则表达式,需要引入Qt正则表达式模块。可以使用以下代码来实现正则表达式的匹配: ```cpp #include <QRegularExpression> #include <QDebug> int main() { QString str = "Hello World!"; QRegularExpression regex("Hello"); if (regex.match(str).hasMatch()) { qDebug() << "Matched" << endl; } else { qDebug() << "Not Matched" << endl; } return 0; } ``` 在这个例子中,我们首先创建了一个QRegularExpression对象,然后使用match()函数来检查给定的字符串是否与正则表达式匹配。如果匹配成功,那么就会输出"Matched",否则输出"Not Matched"。这是一个简单的例子,你可以根据自己的需求来调整正则表达式。 除了匹配,QT6还提供了其他功能,比如替换、捕获组等。你可以通过查阅QT6的官方文档来了解更多关于正则表达式的用法和应用场景。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Qt 如何使用正则表达式 正则表达式 密码 email](https://blog.csdn.net/linbounconstraint/article/details/101867387)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [如何在QT中使用正则表达式](https://blog.csdn.net/Hyc_cheng/article/details/112132963)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值