QT正则表达式提取指定条件字符串以及字符串条件的判断
QT正则表达式示范RegularExpressionDemo.rar-QT文档类资源-CSDN下载https://txwtech.blog.csdn.net/article/details/1264更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/txwtech/86407432
QT正则表达式介绍与使用_txwtech的博客-CSDN博客举例2:表达式 "go{2,8}gle" 在匹配 "Ads by goooooogle" 时,匹配的结果是:成功;匹配到的内容是:"1";{m,n} 表达式至少重复m次,最多重复n次,比如:"ba{1,3}"可以匹配 "ba"或"baa"或"baaa。+ + 表达式至少出现1次,相当于 {1,},比如:"a+b"可以匹配 "ab","aab","aaab".{m,} 表达式至少重复m次,比如:"\w\d{2,}"可以匹配 "a12","_456","M12344"."可以匹配 "a","ac","ad"..https://txwtech.blog.csdn.net/article/details/126408242?spm=1001.2014.3001.5502
QRegExp rx2;
rx2.setPatternSyntax(QRegExp::RegExp);
rx2.setCaseSensitivity(Qt::CaseSensitive);//大小写
rx2.setPattern(ui->textEdit_reg_condition->toPlainText());//textEdit_reg_condition判断条件编辑框
//------元字符---
//rx.setPattern(QString("^[A-Za-z0-9]+$")); //匹配所有大小写字母和数字组成的字符串,Aa1232--true,Aa1232@--false
//rx.setPattern(QString("a[5]")); //匹配a开头,后面是指定包含5的字符串,a5--true,a6--false
//rx.setPattern(QString("a[5678c]")); //匹配a开头,a5,a6,a7,a8,ac--true,ad--false
//rx.setPattern(QString("^cd.a2$")); //匹配cd开头,a2结尾的字符串,cd1a2--true,cd12a2--false,cd后面的.点,一个点代表一位(. 匹配任意单个字符)
//------转义字符---https://txwtech.blog.csdn.net/article/details/126408242?spm=1001.2014.3001.5502
//-----/w 匹配字母、数字、下划线、汉字
//rx.setPattern(QString("\bcd\w*a2\b")); //匹配以cd开头,a2结尾的任意字符串,cd1a2--true,cd123a2--true,\w后面的*, 匹配任意字符
//rx.setPattern(QString("\w{2}"));//字符重复的次数,cc--true,ccc--false
//rx.setPattern(QString("\w{1,3}"));//字符重复表达式至少重复1次,最多重复3次,c,cc或者ccc--true,ccccc--false
//rx.setPattern(QString("b2\w{1,3}"));//字符重复表达式至少重复1次,最多重复3次,b2c,b2cc或者b2ccc--true,b2ccccc--false
//rx.setPattern(QString("b2\w*\d+")); //b2开头,\w*中间任意字符+至少一个数字结尾的条件。b2cc5--true,
//rx.setPattern(QString("b2\w*\d*")); //b2开头,中间任意字符+结尾。b2cc5,或者b2cc--true,d*表示没有数字结尾也符合条件
//rx.setPattern(QString("b2\w*\d{3,}")); //b2开头,中间任意字符+结尾。b2cc523--true,d{3,}表示至少有3个数字
//rx.setPattern(QString("\w*\d{3,}")); //txw523、_132、cc1232 --true,d{3,}表示至少有3个数字
//rx.setPattern(QString("@\d{3,}")); //@1232 --true,d{3,}表示至少有3个数字
//rx.setPattern(QString("\w*[^abc]")); //字符串:ddffed 不包含abc --true,字符串ttabcdefg包含abc--false
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include
#include
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//background-image: url(:/button_bg.png);
QString pic_path=tr(":/button_bg.png");
QString pic_path_hover=tr(":/button_pause_icon.png");
QString styleSheet=QString("QPushButton{border-image:url(%1);background-color:transparent;border:none;}"
"QPushButton:hover{border-image:url(%2);background-color:transparent;font: 12pt \"楷体\";}"
"QPushButton:pressed{border-image:none;background-color: rgb(0, 170, 0);font: 18pt \"楷体\";}"
).arg(pic_path).arg(pic_path_hover);
ui->pushButton_reg_validate->setStyleSheet(styleSheet);
ui->textEdit_reg_condition->setText("b[5]");
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_reg_validate_clicked()
{
QString reg_str=ui->textEdit_reg_condition->toPlainText();
QRegExp exp2(reg_str);
bool b_Valid=exp2.isValid();
if(b_Valid==true)
{
ui->label_show_msg->setText("Reg格式正确");
}
else
{
ui->label_show_msg->setText("Reg格式错误");
}
}
void MainWindow::on_pushButton_start_to_match_clicked()
{
QRegExp rx2;
rx2.setPatternSyntax(QRegExp::RegExp);
rx2.setCaseSensitivity(Qt::CaseSensitive);//大小写
rx2.setPattern(ui->textEdit_reg_condition->toPlainText());//textEdit_reg_condition判断条件编辑框
//------元字符---
//rx.setPattern(QString("^[A-Za-z0-9]+$")); //匹配所有大小写字母和数字组成的字符串,Aa1232--true,Aa1232@--false
//rx.setPattern(QString("a[5]")); //匹配a开头,后面是指定包含5的字符串,a5--true,a6--false
//rx.setPattern(QString("a[5678c]")); //匹配a开头,a5,a6,a7,a8,ac--true,ad--false
//rx.setPattern(QString("^cd.a2$")); //匹配cd开头,a2结尾的字符串,cd1a2--true,cd12a2--false,cd后面的.点,一个点代表一位(. 匹配任意单个字符)
//------转义字符---https://txwtech.blog.csdn.net/article/details/126408242?spm=1001.2014.3001.5502
//-----/w 匹配字母、数字、下划线、汉字
//rx.setPattern(QString("\bcd\w*a2\b")); //匹配以cd开头,a2结尾的任意字符串,cd1a2--true,cd123a2--true,\w后面的*, 匹配任意字符
//rx.setPattern(QString("\w{2}"));//字符重复的次数,cc--true,ccc--false
//rx.setPattern(QString("\w{1,3}"));//字符重复表达式至少重复1次,最多重复3次,c,cc或者ccc--true,ccccc--false
//rx.setPattern(QString("b2\w{1,3}"));//字符重复表达式至少重复1次,最多重复3次,b2c,b2cc或者b2ccc--true,b2ccccc--false
//rx.setPattern(QString("b2\w*\d+")); //b2开头,\w*中间任意字符+至少一个数字结尾的条件。b2cc5--true,
//rx.setPattern(QString("b2\w*\d*")); //b2开头,中间任意字符+结尾。b2cc5,或者b2cc--true,d*表示没有数字结尾也符合条件
//rx.setPattern(QString("b2\w*\d{3,}")); //b2开头,中间任意字符+结尾。b2cc523--true,d{3,}表示至少有3个数字
//rx.setPattern(QString("\w*\d{3,}")); //txw523、_132、cc1232 --true,d{3,}表示至少有3个数字
//rx.setPattern(QString("@\d{3,}")); //@1232 --true,d{3,}表示至少有3个数字
//rx.setPattern(QString("\w*[^abc]")); //字符串:ddffed 不包含abc --true,字符串ttabcdefg包含abc--false
QString raw_str=ui->textEdit_input_str->toPlainText();//textEdit_input_str字符串编辑框
bool b_result=rx2.exactMatch(raw_str); //exactMatch(QString),返回是否整串匹配,匹配一部分也返回false。
if(b_result==true)
{
ui->label_show_msg->setText("符合条件");
}
else
{
ui->label_show_msg->setText("不符合条件");
}
}
void MainWindow::on_pushButton_pick_string_clicked()//字符信息提取
{
QRegExp rx2;
rx2.setPatternSyntax(QRegExp::RegExp);
rx2.setCaseSensitivity(Qt::CaseSensitive);//大小写
rx2.setPattern(ui->textEdit_reg_condition->toPlainText());//textEdit_reg_condition判断条件编辑框
QString raw_str=ui->textEdit_input_str->toPlainText();//textEdit_input_str字符串编辑框
QStringList list_str;
int pos2=0;
while((pos2=rx2.indexIn(raw_str,pos2))!=-1)
{
list_strsetText(str_msg);
qDebug()
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?