【QT】QT正则表达式

简介: 【QT】QT正则表达式

QT正则表达式

正则表达式即一个文本匹配字符串的一种模式。Qt中QRegExp类实现使用正则表达式进行模式匹配,且完全支持Unicode,主要应用:字符串验证、搜索、查找替换、分割。

正则表达式中字符及字符集

正则表达式中的量词

image-20220124111743871

正则表达式中的断言

image-20220124112005197

QRegExp支持通配符

image-20220124112047375

示例:

 //完整匹配
    QRegExp reg("a");
    qDebug()<<reg.exactMatch("a");

    //任意个数字+两个非数字
    QRegExp reg0("\\d*\\D{2}");
    qDebug()<<reg0.exactMatch("123ab");

    //使用通配符匹配
    QRegExp rx("*.txt");
    //设置匹配语法
    rx.setPatternSyntax(QRegExp::Wildcard);//支持通配符
    qDebug()<<rx.exactMatch("123.txt");

    //匹配单词边界
    QRegExp reg1;
    //设置匹配模式
    reg1.setPattern("\\b(hello|Hello)\\b");
    qDebug()<<reg1.indexIn("Hello everyone.");//返回起始下标

    //捕获匹配的文本
    //由(?:开始。)结束
    QRegExp regHight("(\\d+)(?:\\s*)(cm|inchi)");
    qDebug()<<regHight.indexIn("Mr.WM 170cm");
    qDebug()<<regHight.cap(0);//完整
    qDebug()<<regHight.cap(1);//第一部分

    //断言?!
    QRegExp reg2;
    reg2.setPattern("面(?!包)");//面后面不是包才匹配成功
    QString str ="我爱吃面食,面包也行吧。";
    str.replace(reg2,"米");//我爱吃米食,面包也行吧
    qDebug()<<str;

    //Qt5引入了新的类
    QRegularExpression  regExp("hello");
    //结果QRegularExpressionMatch(Valid, has match: 0:(0, 5, "hello")
    qDebug()<<regExp.match("hello world");

    regExp.setPattern("[A-Z]{3,8}");
    //设置匹配模式-大小写不敏感
    regExp.setPatternOptions(QRegularExpression::CaseInsensitiveOption);
    qDebug()<<regExp.match("hello");

    QRegularExpression reDate("^(\\d\\d)/(\\d\\d)/(\\d\\d\\d\\d)$");//日期
    QRegularExpressionMatch match0 = reDate.match("01/24/2022");
    QString strMatch = match0.captured(0);
    qDebug()<<strMatch;
    qDebug()<<match0;

    QString sPattern;
    sPattern = "^(Jan|Feb|Mar|Apr|May) \\d\\d \\d\\d\\d\\d$";
    QRegularExpression rDate1(sPattern);
    QString ss("Apr 01");
    QRegularExpressionMatch match2;
    match2 = rDate1.match(ss,0,QRegularExpression::PartialPreferCompleteMatch);    //部分匹配
    qDebug()<<match2.hasMatch();//完整匹配
    qDebug()<<match2.hasPartialMatch();//部分匹配
    qDebug()<<match2;
相关文章
|
1月前
【qt】正则表达式来判断是否为邮箱登录
【qt】正则表达式来判断是否为邮箱登录
20 0
|
物联网 Linux Android开发
|
自然语言处理 C语言 API
【Qt编程】基于Qt的词典开发系列&lt;十五&gt;html特殊字符及正则表达式
1、html特殊字符的显示      我们知道html语言和C语言一样也有一些特殊字符,它们是不能正常显示的,必须经过转义,在网上可以查到如何显示这些字符,如下图所示: 上图给了最常用的特殊字符的显示,下面我们来实验一下: 首先在记事本中写入一句: 程序例#include 然后就文本后缀名改为.html后,用浏览器打开,显示如下: 我们从上图可以发现include后面没有显示,但是当我们在文本中写入: 程序例#include 或 程序例#include 时就能正常显示了。
1125 0
|
2月前
|
数据安全/隐私保护 C++ 计算机视觉
Qt(C++)开发一款图片防盗用水印制作小工具
文本水印是一种常用的防盗用手段,可以将文本信息嵌入到图片、视频等文件中,用于识别和证明文件的版权归属。在数字化和网络化的时代,大量的原创作品容易被不法分子盗用或侵犯版权,因此加入文本水印成为了保护原创作品和维护知识产权的必要手段。 通常情况下,文本水印可以包含版权声明、制作者姓名、日期、网址等信息,以帮助识别文件的来源和版权归属。同时,为了增强防盗用效果,文本水印通常会采用字体、颜色、角度等多种组合方式,使得水印难以被删除或篡改,有效地降低了盗用意愿和风险。 开发人员可以使用图像处理技术和编程语言实现文本水印的功能,例如使用Qt的QPainter类进行文本绘制操作,将文本信息嵌入到图片中,
135 1
Qt(C++)开发一款图片防盗用水印制作小工具
|
1月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
40 0
|
16天前
|
21天前
|
C++
C++ Qt开发:QUdpSocket网络通信组件
QUdpSocket是Qt网络编程中一个非常有用的组件,它提供了在UDP协议下进行数据发送和接收的能力。通过简单的方法和信号,可以轻松实现基于UDP的网络通信。不过,需要注意的是,UDP协议本身不保证数据的可靠传输,因此在使用QUdpSocket时,可能需要在应用层实现一些机制来保证数据的完整性和顺序,或者选择在适用的场景下使用UDP协议。
58 2
Qt开发网络嗅探器02
Qt开发网络嗅探器02
|
1月前
|
存储 运维 监控
Qt开发网络嗅探器01
Qt开发网络嗅探器01