Qt正则表达式文档介绍

[华中科技计组实验]logisim完成单周期5级流水MIPS CPU [华中科技计组实验]logisim完成单周期5级流水MIPS32 CPU hu~,终于完成了,真是费劲呐 支持24条指令,5级流水线,可以对分支指令处理,寄存器冲突处理,指令ROM为1K,数据RAM为1M,32位MIPS指令集CPU 但是… 大量使用比较器造成硬件开销巨大,测试一下发现这尼玛真是个老爷车还没单周期跑的快,自己电脑cpu占百分之八九十只能跑到20多赫兹,一个走马灯跑了半天,可优化空间太大了,写了那么多天造成这个破样,有点悲剧。。。 先放个图大伙参考就行了,要是有人想听思路的话接下来再更 . 阅读详情

Qt中正则表达式在 类QRegExp中有详细的介绍,想看原文档的可以在Qt中查看。此处主要是翻译该文档。

 

Introduction

 

Regexps are built up from expressions, quantifiers, and assertions. The simplest expression is a character, e.g. x or 5. An expression can also be a set of characters enclosed in square brackets. [ABCD] will match an A or a B or a C or a D. We can write this same expression as [A-D], and an expression to match any capital letter in the English alphabet is written as [A-Z].

regexp是由表达式、量词和断言构建的。最简单的表达式是字符,例如x或5。表达式也可以是方括号内的一组字符。[ABCD]将匹配A、B、C或D。我们可以将这个表达式写成[A- D],而与英语字母表中任何大写字母匹配的表达式写成[A- Z]。

A quantifier specifies the number of occurrences of an expression that must be matched. x{1,1} means match one and only one x. x{1,5} means match a sequence of x characters that contains at least one x but no more than five.

量词必须指定匹配的表达式的出现次数。{1,1}表示匹配一个且仅匹配一个x。{1,5}表示匹配包含至少一个x但不超过五个的x字符序列。

Note that in general regexps cannot be used to check for balanced brackets or tags. For example, a regexp can be written to match an opening html <b> and its closing </b>, if the <b> tags are not nested, but if the <b> tags are nested, that same regexp will match an opening <b> tag with the wrong closing </b>. For the fragment <b>bold <b>bolder</b></b>, the first <b> would be matched with the first </b>, which is not correct. However, it is possible to write a regexp that will match nested brackets or tags correctly, but only if the number of nesting levels is fixed and known. If the number of nesting levels is not fixed and known, it is impossible to write a regexp that will not fail.

注意,一般情况下,regexp不能用于检查平衡的括号或标记。例如,可以编写regexp来匹配开始的html <b>及其结束的</b>,如果<b>标记没有嵌套,但是如果<b>标记嵌套,那么相同的regexp将匹配开始的<b>标记,其结束的</b>是错误的。对于片段<b>bold <b>bold </b></b>,第一个<b>将与第一个</b>匹配,这是不正确的。然而,可以编写一个regexp来正确匹配嵌套的括号或标记,但前提是嵌套级别的数量是固定且已知的。如果嵌套级别的数量不固定且已知,则不可能编写不会失败的regexp。

Suppose we want a regexp to match integers in the range 0 to 99. At least one digit is required, so we start with the expression [0-9]{1,1}, which matches a single digit exactly once. This regexp matches integers in the range 0 to 9. To match integers up to 99, increase the maximum number of occurrences to 2, so the regexp becomes [0-9]{1,2}. This regexp satisfies the original requirement to match integers from 0 to 99, but it will also match integers that occur in the middle of strings. If we want the matched integer to be the whole string, we must use the anchor assertions, ^ (caret) and $ (dollar). When ^ is the first character in a regexp, it means the regexp must match from the beginning of the string. When $ is the last character of the regexp, it means the regexp must match to the end of the string. The regexp becomes ^[0-9]{1,2}$. Note that assertions, e.g. ^ and $, do not match characters but locations in the string.

假设我们希望regexp匹配范围为0到99的整数。至少需要一个数字,因此我们从表达式[0-9]{1,1}开始,它只匹配一个数字一次。这个regexp匹配范围为0到9的整数。要匹配最多99个整数,请将最大出现次数增加到2,这样regexp就变成[0-9]{1,2}。这个regexp满足从0到99匹配整数的原始要求,但它也将匹配字符串中间的整数。如果我们想要匹配整数整个字符串,我们必须使用锚断言,^(脱字符号)和$(美元)。当^ 是regexp的第一个字符,这意味着regexp必须匹配字符串的开始。当$是regexp的最后一个字符时,这意味着regexp必须匹配到字符串的末尾。regexp变得^[0 - 9]{ 1,2 } $。注意,断言,例如^和$,但位置字符串不匹配字符。

举例:

    QRegExp regExp("[0-9]{0,2}[A-Z]{0,1}");
    testLineEdit->setValidator(new QRegExpValidator(regExp, this));

上面例子是指testLineEdit中可以输入数字0~9,次数为0次到2次,再后面还可以输入大写字母A~Z,次数为0~1次。

这里表达式"^[0 - 9]{ 1,2 } $"和“[0-9]{1,1}”的区别在于,比如字符串为“a12b”,使用"^[0 - 9]{ 1,2 } $"表达式,将不会匹配这个字符串,而使用“[0-9]{1,1}”表达式将可以匹配该字符串。

If you have seen regexps described elsewhere, they may have looked different from the ones shown here. This is because some sets of characters and some quantifiers are so common that they have been given special symbols to represent them. [0-9] can be replaced with the symbol \d. The quantifier to match exactly one occurrence, {1,1}, can be replaced with the expression itself, i.e. x{1,1} is the same as x. So our 0 to 99 matcher could be written as ^\d{1,2}$. It can also be written ^\d\d{0,1}$, i.e. From the start of the string, match a digit, followed immediately by 0 or 1 digits. In practice, it would be written as ^\d\d?$. The ? is shorthand for the quantifier {0,1},  i.e. 0 or 1 occurrences. ? makes an expression optional. The regexp ^\d\d?$ means From the beginning of the string, match one digit, followed immediately by 0 or 1 more digit, followed immediately by end of string.

如果您在其他地方看到过对regexp的描述,那么它们看起来可能与这里显示的不同。这是因为一些字符集和一些量词是如此常见,以至于它们被赋予了特殊的符号来表示它们。[0-9]可替换为符号\d。量词完全匹配一个发生,{1, 1 },可以更换表达本身,即x { 1 1 } 和x是一样的。所以我们的0到99匹配器可以写成^\d{1,2}$。也可以写^\d\d {0,1}$,即从一开始的字符串,匹配一个数字,然后立即通过0或1的数字。在实践中,它将被写成^\d\d?$。?是量词{0,1}的简写,即出现0或1次。?使表达式可选。regexp ^\d\d?$表示从字符串的开始匹配一个数字,紧跟着0个或1个数字,紧跟着字符串的结束。

To write a regexp that matches one of the words 'mail' or 'letter' or 'correspondence' but does not match words that contain these words, e.g., 'email', 'mailman', 'mailer', and 'letterbox', start with a regexp that matches 'mail'. Expressed fully, the regexp is m{1,1}a{1,1}i{1,1}l{1,1}, but because a character expression is automatically quantified by {1,1}, we can simplify the regexp to mail, i.e., an 'm' followed by an 'a' followed by an 'i' followed by an 'l'. Now we can use the vertical bar |, which means or, to include the other two words, so our regexp for matching any of the three words becomes mail|letter|correspondence. Match 'mail' or 'letter' or 'correspondence'. While this regexp will match one of the three words we want to match, it will also match words we don't want to match, e.g., 'email'. To prevent the regexp from matching unwanted words, we must tell it to begin and end the match at word boundaries. First we enclose our regexp in parentheses, (mail|letter|correspondence). Parentheses group expressions together, and they identify a part of the regexp that we wish to capture. Enclosing the expression in parentheses allows us to use it as a component in more complex regexps. It also allows us to examine which of the three words was actually matched. To force the match to begin and end on word boundaries, we enclose the regexp in \b word boundary assertions: \b(mail|letter|correspondence)\b. Now the regexp means: Match a word boundary, followed by the regexp in parentheses, followed by a word boundary. The \b assertion matches a position in the regexp, not a character. A word boundary is any non-word character, e.g., a space, newline, or the beginning or ending of a string.

要编写匹配“mail”或“letter”或“correspondence”中的一个单词,但不匹配包含这些单词的单词,例如“email”、“mailman”、“mailer”和“letterbox”,请从匹配“mail”的regexp开始。regexp完全表示为m{1,1}a{1,1}i{1,1}l{1,1},但由于字符表达式由{1,1}自动量化,我们可以将regexp简化为mail,即, m后面跟着a后面跟着i后面跟着l。现在我们可以使用竖条|,这意味着,或者,包含另外两个单词,所以我们匹配这三个单词中的任何一个的regexp就变成了mail|letter|correspondence。匹配“mail”或“letter”或“correspondence”。虽然这个regexp将匹配我们想匹配的三个单词中的一个,但它也将匹配我们不想匹配的单词,例如“email”。为了防止regexp匹配不需要的单词,我们必须告诉它在单词边界处开始和结束匹配。首先,我们将regexp括在括号中(mail|letter|correspondence)。括号将表达式分组在一起,它们标识了我们希望捕获的regexp的一部分。将表达式括在括号中允许我们在更复杂的regexp中将其用作组件。它还允许我们检查这三个单词中的哪一个是真正匹配的。为了强制匹配在单词边界上开始和结束,我们将regexp放在\b单词边界断言:\b(mail|letter|correspondence)\b中。regexp的意思是:匹配一个单词边界,后面跟着圆括号中的regexp,后面跟着一个单词边界。\b断言匹配regexp中的位置,而不是字符。字边界是任何非字字符,例如空格、换行符或字符串的开头或结尾。

If we want to replace ampersand characters with the HTML entity &amp;, the regexp to match is simply &. But this regexp will also match ampersands that have already been converted to HTML entities. We want to replace only ampersands that are not already followed by amp;. For this, we need the negative lookahead assertion, (?!__). The regexp can then be written as &(?!amp;), i.e. Match an ampersand that is not followed by amp;.

这一段是说html的,不好翻译,就不翻译免得误导人了。有会翻译的朋友可以在下面留言。

If we want to count all the occurrences of 'Eric' and 'Eirik' in a string, two valid solutions are \b(Eric|Eirik)\b and \bEi?ri[ck]\b. The word boundary assertion '\b' is required to avoid matching words that contain either name, e.g. 'Ericsson'. Note that the second regexp matches more spellings than we want: 'Eric', 'Erik', 'Eiric' and 'Eirik'.

如果我们想计算一个字符串中所有出现的“Eric”和“Eirik”,两个有效的解决方案是\b(Eric|Eirik)\b和\bEi?ri[ck]\b。需要单词边界断言'\b'来避免匹配包含两个名称的单词,例如:“Ericsson”。注意,第二个regexp匹配的拼写比我们希望的要多:“Eric”、“Erik”、“Eiric”和“Eirik”。

 

 

MLC-LLM框架在安卓设备上的模型编译与部署全流程解析 本文详细解析了如何利用MLC-LLM框架在安卓设备上编译与部署大语言模型。从环境搭建、模型获取与量化编译,到最终的安卓应用打包与调试,提供了完整的实战流程。重点介绍了如何通过MLC-LLM将大型模型优化为适合移动端运行的格式,实现本地、低延迟、隐私安全的AI应用部署。 阅读详情

相关推荐

gsplat在windows本地部署

3DGS的cuda提效和优化内存的版本gsplat,使得在有一定GPU计算能力的电脑上也能够尝尝3DGS的效果。我在2025年的开年之初尝试配置过gsplat,由于过程中遇到很多问题,最终还是有一些windows上字符编码的问题,没有跑通,最近看gsplat的github更新了3DGUT,优化了反射和二次折射,以及适用于非线性相机模型,如鱼眼相机等。在data目录下下载好了360_v2的数据,进入之后images文件夹是原始分辨率的图像,images_2是下采样系数为2的数据,以此类推。

yuleaf_csdn的博客 2370

Qt—正则表达式

正则表达式 正则表达式介绍 正则表达式组成元素. 文本捕获 新的QRegularExpression类

Half-up的博客 8293

《揭秘 BME688人工智能压力湿度温度气体传感器:气体检测的多面能手》:此文为AI自动生成

BME688 是博世推出的一款具有人工智能和集成高线性度高精度压力、湿度、温度传感器的气体传感器,专为移动和联网应用开发,尺寸紧凑且低功耗。BME688 作为一款先进的传感器,在多个领域展现出卓越的性能。它采用了坚固而紧凑的 3.0 x 3.0 x 0.9 mm³ 封装,这种小巧的尺寸使其能够轻松应用于对空间要求严格的移动设备和联网应用中。同时,低功耗的特性也使得它在能源有限的环境下能够长时间稳定运行。

zheng_ruiguo的专栏 1930

Qt 常见的正则表达式

QT常见正则表达式

luobuxiade的博客 878

YOLOv8-seg模型后处理实战:从输出解析到mask生成的完整流程

本文详细解析了YOLOv8-seg实例分割模型的后处理完整流程,从理解output0与output1的双输出结构,到实现检测框的置信度过滤、坐标转换与NMS,再到核心的掩膜生成数学原理与矩阵乘法实现。文章深入探讨了如何将掩膜系数与原型掩膜库结合,生成像素级分割结果,并提供了掩膜上采样、边缘优化、性能提升及解决实际应用难题的实战方案。

xgboost6farmer的博客 317

舵机PWM信号转互斥继电器开关信号

-----------------本文由“麦粒电子”撰写,并提供相应产品服务。---------------- 叙述 上次的PWM转继电器开关方案得到大家的不少好评(博客链接),但是发现有些玩家需要一路PWM同时去控制两路继电器开关通断,并且两者是互斥的,好去控制两种不同的负载。所以就继续升级了如下的模块。 正常的控制部件顺序这样:遥控器按钮拨动,遥控器接收机相应通道PWM值变化,PWM转开关模块检测PWM值发生变化从而驱动相应机械继电器触点吸合释放。本模块的两个继电器动作是互斥的,也就是不会同时吸合。

Mai_LiElectronic的博客 1632

Qt正则表达式验证邮箱格式附示例代码

类 :QRegExp 验证方法:exactMatch() (符合格式返回true,否则false) 正则表达式基本介绍: 1.元字符解释:^表示 规则字符串开始 $ 表示结束 2.+表示匹配次数>=1 *表示任意次数 {n,m} 匹配次数最少n次 最多m次 邮箱的正则表达式: ^[a-z0-9A-Z]+[- | a-z0-9A-Z . _]+@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-z]{2,}$ 示例代码: ...

陈子青的博客 2097

有了网段为什么还要有VLAN???

近几日,在学习VLAN及VXLAN方面的知识,对于产生原因做一个总结及详解。 VLAN(Virtual Local Area Network,虚拟局域网),其主要用途是用来缩小广播域,即进行隔离。 先对广播域的一个概念做如下描绘:如下图,主机A、B、C、D均连接在交换机SW1上,其中A、C同网段为192.168.252网段,而B和D同网段,为192.168.250网段。 现,假如A与C第...

dandandean_96的博客 6885

Qt QLineEdit通过正则表达式方式格式输入邮箱并且验证是正确

#include "testqt.h" #include <QIntValidator> void testqt::Save()//验证邮箱是否成功 { ui.label->setText(ui.lineEdit->text()); const QValidator *v = ui.lineEdit->validator(); int pos = 0; /* 返回 enum State { Invalid,不正确 Intermedi

TT的博客 2090

LLVM实战:如何用Clang+LLVM打造你的第一个C++编译器(附完整配置步骤)

本文详细介绍了如何使用Clang+LLVM构建C++编译器的完整配置步骤,从环境准备到编译流程剖析,再到调试与优化技巧。通过实战指南,帮助开发者深入理解LLVM编译器框架的工作原理,并掌握交叉编译与性能分析等高级功能。

sprite的博客 748

你学Simulink--基于储能系统的建模与仿真场景:飞轮储能系统在电网调频中的作用仿真

本文详细介绍了利用Simulink+Simscape搭建飞轮储能系统(FESS)电网调频仿真模型的全过程。主要内容包括:系统工作原理及调频作用分析,基于Simulink的模块化建模步骤(飞轮、电机/发电机、功率电子接口等组件搭建),调频控制策略实现(频率检测、功率指令生成和模式切换),以及仿真参数设置与结果分析方法。该模型可有效模拟FESS在电网频率调节中的快速响应特性,为新能源存储和智能电网研究提供重要仿真工具,同时可通过参数优化和算法改进进一步提升系统性能。

xiaoheshang_123的博客 168

QT 关于邮箱格式的正则表达式判断

下划线“_”,以及小数点 "." 分割的名称。所有大写字母,小写字母,以及数字0~9,所有大写字母,小写字母,以及数字0~9。如:第二条所示,符号后必须跟字母或数字。,前称可以用下划线和点分割成多个字段。大小写字母,并且最少2位,最多6位。,前称有数字大小写字母。

hw5230的博客 1009

基于STM32的太阳能充电宝设计_资料编号31

系统硬件包括主控 STM32F103C8T6、0.96 OLED 显示屏、蜂鸣器、电源自锁开关、温度传感器 DS18B20、继电器、5 V DC 升压模块 、TB4056、18650锂电池、9 V太阳能板、稳压降压 5 V三极管。电源供应:锂电池为系统供电,9 伏太阳能板经 5 伏降压稳压三极管降压为 5 伏后传送到 TP4056,TP4056 为锂电池供电,因锂电池电压 3.7 伏,通过 5 伏 DC 升压模块升压到 5 伏为整个系统提供 5 伏电压。

嵌入式阿齐Archie 1万+

Qt 正则表达式提取文件中的 USB 设备 ID

Qt

二分掌柜的 663

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

使用正则表达式限制swing (JTextField等) 的输入

之前使用Qt编写Gui程序的时候,可以直接使用正则表达式限制所有输入框,非常方便。 这段时间要做一份课程设计,使用java编写,ui要限制输入,比如只能输入x位数字,输入身份证等。 百度了许多资料,发现了一个 JFormattedTextField 的类可以规范输入。 刚开始试用觉得还不错,后来发现一个严重的问题:如果光标不是从最左边插入的话,那么左边的位置就会被空格占满,影响输

Mr.郑的专栏 2604

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Qt5.9中自带的实例

1.regularexpression.pro推荐的正则表达式示例 2.settingseditor.pro 配置文件或注册表的读写 3. systray.pro 托盘图标的各种用法 4. digitalclock.pro LCD数字显示 5. calculator.pro 计算器 6.simplebrowser 浏览器示例 7...

yth796的专栏 2672

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

[Qt]常用实用Qt小模块(经典)

0:website http://quitcoding.com/ 1:QRegExp 正则表达式 QRegExp regExp("[a-zA-Z][1-9][0-9]{0,2}"); xxx->setValidator(new QRegExpValidator(regExp,this)); lineEdit->setValid...

weixin_34228387的博客 952

Qt 铁甲阅读器-搜索

文档搜索功能帮助用户快速定位PDF、OFD等文档中的关键词内容,支持中文、英文、数字等搜索,提供区分大小写、全字匹配和当前页搜索选项。搜索过程异步进行,显示检索进度和结果数。用户可点击结果跳转原文位置,结果高亮显示。修改关键词或关闭面板会重置搜索。当前版本不支持图片OCR和多文档跨文件搜索。使用快捷键Ctrl+F或在工具栏点击"搜索"按钮即可启用该功能。

项目开发/项目维护/项目指导 246

04——驾校科目一考试——登录窗口的功能(验证邮箱地址)

QT实现邮箱账号验证

dearQiHao的博客 1673

Qt正则表达式

例如,[0-9]匹配西方字母表中的一个数字,而 \d 匹配任何字母表中的一个数字。注意:在其他regexp文档中,字符集通常称为“字符类”

songsong9181的博客 2935

Qt正则表达式类QRegExp(附检验小程序)

在许多场景中,我们需要验证用户输入的数据是否有效,或者是查找并修改文本,或者是提取指定数据,为此,相对于Qstring的一些函数,QT提供了一个更加强大的类——QRegExp,使用函数配合正则表达式来操作字符串,QRegExp可以进行如下操作

花狗Fdog的博客 7677

Qt之正则表达式

1.输入int类型 限制 QIntValidator *validator = new QIntValidator(0, 100, this); ui-&gt;lineEdit-&gt;setValidator(validator); 2.输入浮点数类型 限制 QDoubleValidator *validator = new QDoubleValidator(-100, 100, 2, ...

朗朗上口就行啦的博客 5375

QT正则表达式提取指定条件字符串以及字符串条件的判断

/匹配cd开头,a2结尾的字符串,cd1a2--true,cd12a2--false,cd后面的.点,一个点代表一位(. 匹配任意单个字符)//匹配以cd开头,a2结尾的任意字符串,cd1a2--true,cd123a2--true,\w后面的*, 匹配任意字符。//------转义字符---https://txwtech.blog.youkuaiyun.com/article/details/126408242?//-----/w 匹配字母、数字、下划线、汉字。//------元字符---

Txwtech 2096

QT正则表达式

1、indexIn函数:原型为int QRegExp::indexIn(const QString &amp;str, int offset = 0, CaretMode caretMode = CaretAtZero) const形参:str为被操作的字符串,从str的第offset个字符的位置开始查找(若offset为负数,指从str的倒数第|offset|个字符开始查找),caremode指...

野生猿-群号1025127672 5754

Qt C++ 正则表达式

【代码】Qt C++ 正则表达式。

2403_89632449的博客 220

QT之正则表达式

<br /><br />Qt之正则表达式<br /><br /><br />    Qt的QtCore组件下的QRegExp类对正则表达提供了很好的支持.<br />    首先,正则表达式是干什么的呢,,比如,你想从一个句子text中找到姓'王'的人,想把文字中的所有手机号找出来...正则表达室能很好得完成这样的工作,,,它就是按自己想要的规则来匹配文本的.<br />    对于QRegExp这个类,是很简单的...Qt文档里有,就不多说了...<br /><br /><br />下面主要是正则表达室的

Jesse的专栏 1873
上一篇: 5G三大场景和两个关键技术
下一篇: Qt定时器的使用
qiukapi
博客等级 码龄12年 51粉丝 93原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值