Qt正则表达式
喜欢官方术语的可以直接参考官方文档(助手Assistant里搜索QRegExp)
下面只介绍 QRegularExpression(与QRegularExpressionMatchIterator配合使用),官方推荐QRegularExpression,注意正则表达要加小括号,而QRegExp不用。
以下按理解列出常用的几个:
+,“连续的”,如果只单个满足就输出单个,如果相邻的也满足那就一起输出
{n},连续的n个
{n,},连续的至少n个
{n,m},连续的n至m个
\\d,单个数字【\\D大写则取反,即单个非数字,下同】
\\w,单个字符(字母、下滑杠、数字)
\\s,单个空格
[0-9a-zA-Z],单个数字、大小写字母【方括号里加^则取反,下同。如[^0-9]非数字】
[\u4e00-\u9fa5],单个中文
【代码】
#include <QCoreApplication> #include <QRegularExpression> //引入头文件 #include <QDebug> #pragma execution_character_set("utf-8") //防止中文乱码 int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QRegularExpression re; //re.setPattern("(\\d+)"); //连续的数字 //re.setPattern("(\\d{4})"); //连续的4个数字 //re.setPattern("(\\w+)"); //连续的字符(字母、下滑杠、数字) //re.setPattern("(\\s+)"); //连续的空格 //re.setPattern("([\u4e00-\u9fa5]+)"); //连续的中文 re.setPattern("([^A-Z]+)"); //连续的非大写字母 QRegularExpressionMatchIterator i=re.globalMatch("中文aBC_123 def 2023/03/07"); QStringList words; while(i.hasNext()) { QRegularExpressionMatch match=i.next(); QString word=match.captured(1); words<<word; qDebug()<<word; } //指定要匹配的单词 //re.setPattern("Qt"); //具体单词,忽略大小写。如qt、qT等 //re.setPatternOptions(QRegularExpression::CaseInsensitiveOption); return a.exec(); }
【值得一看的参考】
Qt扫盲-QRegularExpression 正则匹配总结_太阳风暴的博客-CSDN博客
常用数字与字母的正则表达式 - XQYEAH - 博客园 (cnblogs.com)
QRegexp、QRegularExpression的用法学习 - 灰信网(软件开发博客聚合) (freesion.com)