正则表达式

利用CANoe和CAPL实现高效CAN网关设计与仿真 本文详细介绍了如何利用CANoe和CAPL进行高效CAN网关的设计与仿真。通过搭建仿真工程、导入DBC数据库、编写CAPL脚本等步骤,手把手指导读者构建一个连接不同CAN网络的网关模型,实现报文的监听、转发与信号处理,从而在硬件开发前验证逻辑,提升汽车电子开发效率与可靠性。 阅读详情

正则表达式

首先,先说一下什么是正则表达式:正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

符号含义
++ 号代表前面的字符必须至少出现一次(1次或多次)
** 号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次)
?? 问号代表前面的字符最多只可以出现一次(0次、或1次)

构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与运算符可以将小的表达式结合在一起来创建更大的表达式。
1.匹配一段字符串,所有大写的字符

var str = 'aeiouQWEsrWWWrr';   //目标字符串
		var pattern = /[A-Z]/g;  //正则表达式
		console.log(str.match(pattern));

结果在控制台下显示的是:
在这里插入图片描述
在这里说明一下就是“g”这个符号是对符号进行全局匹配,如果不加"g"只返回一项符合要求的结果。

var str = 'aeiouQWEsrWWWrr';   //目标字符串
		var pattern = /[A-Z]/;  //正则表达式将/g去掉后看一下结果
		console.log(str.match(pattern));

在这里插入图片描述
这边说一下除g以外还其他类型的修饰符

符号描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m执行多行匹配。

那如果我想将上面字符串中在一块儿的大写字母匹配出来,在表达式中加入“+”表示匹配符合要求的字符出现一次或多次。

	var str = 'aeiouQWEsrWWWrr';   //目标字符串
		var pattern = /[A-Z]+/g;  //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
2.匹配一个已知字符串中的其他字符,用符号“^”

		var str = 'aeiouQWEsrWWWrr';   //目标字符串
		var pattern = /[^aeiou]+/g;  //正则表达式
		console.log(str.match(pattern));

会匹配表达式中之外的所有字符
在这里插入图片描述
3.匹配字符串中出现的换行符、空白符用到了“\s”

		var str = 'aeiouQWEs\nrW  WWrr';   //目标字符串
		var pattern = /\s+/g;  //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
如果不想匹配字符中出现的换行符和空白符就用到“\S”,这边S是大写

        var str = 'aeiouQWEs\nrW  WWrr';   //目标字符串
		var pattern = /\S+/g;  //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
4.匹配一段字符串中所有的字母、数字、下划线用到了符号“\w”

	var str = 'aeiouQWEsrW_';   //目标字符串
		var pattern = /\w+/g;        //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
下面是一写非打印字符

符号描述
\cx匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 ‘c’ 字符。
\f匹配一个换页符。等价于 \x0c 和 \cL。
\n匹配一个换行符。等价于 \x0a 和 \cJ。
\r匹配一个回车符。等价于 \x0d 和 \cM。
\s匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符
\S匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t匹配一个制表符。等价于 \x09 和 \cI。
\v匹配一个垂直制表符。等价于 \x0b 和 \cK。

限定符

符合描述
{n}n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,}n 是一个非负整数。至少匹配n 次。例如,‘o{2,}’ 不能匹配 “Bob” 中的 ‘o’,但能匹配 “foooood” 中的所有 o。‘o{1,}’ 等价于 ‘o+’。‘o{0,}’ 则等价于 ‘o*’。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,“o{1,3}” 将匹配 “fooooood” 中的前三个 o。‘o{0,1}’ 等价于 ‘o?’。请注意在逗号和两个数之间不能有空格。

5.“{n}”可以指定匹配字符多少次这个值是固定的。

       var str = "1200923";
	    var pattern3 = /3{1}/g; 
		console.log(str.match(pattern3));

因为我规定的这个字符串中3出现的次数最多是一次。
在这里插入图片描述
如果我将{n}这里的数改一下,超过目标字符中字符出现的次数会有什么结果呢?

	var str = '1200923';   //目标字符串
		var pattern = /3{2}/;        //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
6."{n,}"这个表示匹配符合条件的出现的次数最少是n次,最多没有设置就表示这个数没有确定(多少都可以)

		var str = '1200923234567733';   //目标字符串
		var pattern = /3{1,}/g;        //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
7."{n,m}"这边是限制了匹配的字符最少出现的是n次最多出现的是m次

	var str = '1200923234567733';   //目标字符串
		var pattern = /3{1,1}/g;        //正则表达式
		console.log(str.match(pattern));

在这里插入图片描述
下面介绍的是定位符
先说一下定位符是用来做什么的,定位符使您能够将正则表达式固定到行首或行尾。它们还使您能够创建这样的正则表达式,这些正则表达式出现在一个单词内、在一个单词的开头或者一个单词的结尾。

定位符用来描述字符串或单词的边界,^ 和 $ 分别指字符串的开始与结束,\b 描述单词的前或后边界,\B 表示非单词边界

符号描述
^匹配输入字符串开始的位置。如果设置了 RegExp 对象的 Multiline 属性,^ 还会与 \n 或 \r 之后的位置匹配。
$匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,$ 还会与 \n 或 \r 之前的位置匹配。
\b匹配一个单词边界,即字与空格间的位置。
\B非单词边界匹配。

这边再说·一下JavaScript中的RegExp的知识点

RegExp是对字符串执行的模式匹配的强大工具
直接量语法:

/pattern/attributes

创建 RegExp 对象的语法:

new RegExp(pattern, attributes);

参数
参数 pattern 是一个字符串,指定了正则表达式的模式或其他正则表达式。

参数 attributes 是一个可选的字符串,包含属性 “g”、“i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。
8.匹配一段英文的单词用到了“\b”

		var str = 'This is a sentence , he has a big nose';   //目标字符串
		var pattern = /\bthis/ig;           //"\b"单词边界匹配指定字符并不区分大小写
		var pattern2  = /\bis/ig;           //"\b"
		console.log("pattern匹配模式的结果:"+str.match(pattern));
		console.log("pattern2匹配模式下的结果:"+str.match(pattern2));

在这里插入图片描述

		var str = "This is is a sentence he he has a big nose";   //目标字符串
		var pattern = /\bthis\b/ig;           //"\b"单词边界匹配指定字符并不区分大小写     
		var str2 = "Thisis is a sentence he he has a big nose";    //"\B"表示非单词边界这意味着要匹配的字符后面必须有值
		var pattern1 = /\bthis\B/ig;           
		var pattern2  = /\b([a-z]+) \1\b/ig; 
		console.log("pattern匹配模式的结果:"+str.match(pattern));
	    console.log("pattern匹配模式的结果:"+str2.match(pattern1));
		console.log("pattern2匹配模式下的结果:"+str.match(pattern2));

在这里插入图片描述
捕获的表达式,正如 [a-z]+ 指定的,包括一个或多个字母。正则表达式的第二部分是对以前捕获的子匹配项的引用,即,单词的第二个匹配项正好由括号表达式匹配。\1 指定第一个子匹配项。
选择
用圆括号 () 将所有选择项括起来,相邻的选择项之间用 | 分隔。

() 表示捕获分组,() 会把每个分组里的匹配的值保存起来, 多个匹配值可以通过数字 n 来查看(n 是一个数字,表示第 n 个捕获组的内容)。
8.下面是一个圆括号的应用

var str3 = "1234nihao4567nihao7890";
var pattern3 = /([1-9]{2,2})([a-z]+)/g;
console.log("pattern3匹配模式下的结果:"+str3.match(pattern3));

在这里插入图片描述
但用圆括号会有一个副作用,使相关的匹配会被缓存,此时可用 ?: 放在第一个选项前来消除这种副作用。

符号描述
?:非捕获元素
?=正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
?!反向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串

下面具体举个例子来了解一下"?="和”?!“这两个符号。

     //exp1(?=exp2):查找 exp2 前面的 exp1。
	var str4 = "123456liudong67890liudong3456";
	var pattern4 = /liudong(?=\d)/g;    //"\d"表示[0-9]的数字
	console.log("pattern4匹配模式下的结果:"+str4.match(pattern4));

“(?=)“表示正向预查,会先看括号内的条件”\d”(表示[0-9])在匹配指定的字符,看一下运行结果:
在这里插入图片描述
如果我把后面的数字去掉后后面那个字符串式匹配不到的

var str4 = "123456liudong67890liudong";
var pattern4 = /liudong(?=\d)/g;    //"\d"表示[0-9]的数字
console.log("pattern4匹配模式下的结果:"+str4.match(pattern4));

在这里插入图片描述
相信通过这两者的对比就可以发现不同了。
再说一下"?<="

//(?<=exp2)exp1:查找 exp2 后面的 exp1。
var str4 = "123456liudong67890liudong12121";
var pattern5 = /(?<=liudong)\d+/g;
console.log("pattern5匹配模式下的结果:"+str4.match(pattern5));

在这里插入图片描述
"?!"应用,匹配不满足圆括号内的指定字符。

//exp1(?!exp2):查找后面不是 exp2 的 exp1。
var str4 = "123456liudong-67890liudong-12121";
var pattern6 = /liudong(?!\d+)/g;
console.log("pattern6匹配模式下的结果:"+str4.match(pattern6));

在这里插入图片描述
"?<!"应用,匹配前面不是圆括号内的内容的字符。

//(?<!exp2)exp1:查找前面不是 exp2 的 exp1。
var str4 = "123456-liudong67890-liudong 12121";
var pattern7 = /(?<!\d+)liudong/g;
console.log("pattern7匹配模式下的结果:"+str4.match(pattern7));

在这里插入图片描述

【WB32库开发】第9章 TIM1高级定时器——输出多路PWM PWM(Pulse Width Modulation)意为脉冲宽度调制,简称脉宽调制 。在工控行业,PWM信号可以用来调节电机转速、调节变频器以及BLDC电机驱动等;在LED照明行业,可以通过PWM来控制LED的亮暗变化;还可以通过PWM信号来控制无源蜂鸣器发出简单的声音等。 WB32也可输出PWM,需配置WB32上的定时器。 在WB32中有4个定时器,其中TIM1为高级定时器,TIMx(2-4)为通用定时器,这四个定时器均挂载在APB1总线上,每个定时器都可以输出4路PWM。 本章需要使用固件库TIM例程 阅读详情

相关推荐

ROS 2 Slam Toolbox实战:从零跑通2D激光建图

SLAM(同步定位与地图构建)是移动机器人实现自主导航的基础技术,其核心在于通过传感器数据实时估计位姿并构建环境栅格地图。slam_toolbox作为ROS 2 Humble及后续LTS版本官方主推的2D SLAM后端,采用图优化+闭环检测架构,兼顾实时性、鲁棒性与工程可维护性。相比cartographer和hector_slam,它原生支持ROS 2、参数精简、诊断友好,特别适合硬件资源有限、缺乏IMU或深度相机的差速机器人平台。本文聚焦真实部署场景,覆盖RPLIDAR等常见2D激光雷达与TurtleBo

weixin_30596165的博客 358

notepadd++正则表达式大小写转换

示例1:将语句 test this sentence 转为大写 查找:^.*$ 替换:\U$0 或------------ 查找:^(.*)$ 替换:\U\1 或 \U$1 示例2:将语句 TEST THIS SENTENCE 转为小写 查找:^.*$ 替换:\L$0 或------------ 查找:^(.*)$ ...

aa781398079的博客 1636

以太网传输硬件设计大全

1.网线的介绍RJ45由插头和插做组成,也就是我们常说的网口和网线。RJ45 网线插头又称水晶头,共有八芯做成。RJ45网络传输线分为直通线、交叉线和全反线。直通线用于异种网络设备之间的互连,例如,计算机与交换机。交叉线用于同种网络设备之间的互连,例如,计算机与计算机。全反线用于超级终端与网络设备的控制物理接口之间的连接。下面将介绍一下各线的作用和区别。1.直通线:又叫正线或标准线,两端采用568B做线标准,注意两端都是同样的线序且一一对应。直通线是应用最广泛,现在最常用的线。

weixin_45365488的博客 6750

正则将小写替换为大写

Android Studio 拥有全局替换功能 ctrl+shift+F 我想通过正则替换 Callback.(\w)(\d) 替换为$1$2 但是我想将$1 大写 如何操作。

丿灬安之若死 1884

Cesium实战:从DEM数据到3D地形可视化的全流程解析

本文详细解析了从DEM数据到3D地形可视化的全流程,重点介绍了Cesium和Cesiumlab在数字高程模型(DEM)处理与地形数据转换中的应用。通过实战案例和工具对比,帮助开发者高效实现地形可视化,并分享性能优化与高级功能开发经验。

weixin_29079743的博客 336

从零到一:构建嵌入式Nginx的模块化架构与跨平台部署实战

本文详细介绍了在ARM32架构的RV1126嵌入式设备上,通过交叉编译技术构建模块化Nginx服务器的完整实战流程。涵盖环境配置、依赖库编译、Nginx核心与http_ssl_module等模块集成、性能优化及部署调试,为嵌入式开发提供高效可靠的Web服务器解决方案。

rock5的博客 202

史上最全的正则表达式-匹配中英文、字母和数字

在做项目的过程中,使用正则表达式来匹配一段文本中的特定种类字符,是比较常用的一种方式,下面是对常用的正则匹配做了一个归纳整理。 1、匹配中文:[\u4e00-\u9fa5] 2、英文字母:[a-zA-Z] 3、数字:[0-9] 4、匹配中文,英文字母和数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$ 同时判断输入长度: [\u4e00-\u9fa5_a-zA-Z0-9_...

杨先森的博客 48万+

DeepSeek Harness“一切皆插件”核心机制详解

DeepSeek Harness 的“一切皆插件”核心 = Cordis 微内核 + 服务化能力接口 + 声明式依赖注入 + 类型化事件 + 可逆副作用 + 配置层 Profile/Bundle/Patch 组合。它的工程收益是:把模型、工具、循环、存储、UI 等所有 Agent 能力都变成“可从配置替换、可干净装卸”的单元,而不是写死在框架里。

软件行业技术文化交流。 600

正则表达式学习

入门 开始和结束 字符组 区间 特殊字符转义 取反 快捷匹配数字和字母 匹配空白 任意字符 重复次数和区间 或者条件 进阶 分组 非捕获分组 分组的引用 正向先行断言 反向先行断言 正向后行断言 反向后行断言 常用元字符整理 相关网站 在线测试网站 题目练习网站 其他笔记

我可能在扯淡 3085

YOLOv11改进 | 集成FEM、FFM与SCAM即插即用模块:特征增强、融合与空间上下文建模新范式

FEM解决特征表达不足问题,增强关键特征响应FFM优化多尺度融合,提升小目标检测精度SCAM建模空间上下文,改善目标交互预测在保持YOLOv11实时性优势的同时,实现mAP+8.1%的显著提升,特别在复杂光照、密集目标、交互预测场景表现突出。其模块化设计使开发者可根据需求灵活组合,为各种复杂场景提供定制化解决方案。未来,随着跨模态扩展与神经架构搜索的深入,YOLOv11-FSC将进一步推动目标检测技术向更智能、更高效的方向发展。

走向CTO的路上... 988

如何懂固高卡以及滚筒轴+平移轴配合运动?

🏆本文收录于专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家!持续更新中,up!up!up!!

**My Coding Family** 848

正则表达式(9):扩展正则表达式

上图中的扩展正则使用了分组符号”( )”,”(com|net)”表示将括号内的内容看做一个整体,而括号内的内容为”com|net”,它表示”com或者net”,所以,”(com|net)$”就表示以com或者net结尾的行。上图中,grep命令使用了”-E”选项,表示grep命令会把”正则表达式”中的符号当成”扩展正则表达式”去理解,而不再使用默认的”基本正则表达式”。5、顶级域名之前必须包含一个”点”,换句话说就是,邮箱必须以”.com”、”.net”、”.org”、”.edu”结尾。

qq_40531442的博客 2171

HQChart实战教程19 - PC端分时图定制tooltip

HQChart实战教程19 - PC端分时图定制tooltip序效果步骤1. 创建一个外部tooltip的div2. 注册标题绘制事件3. 标题绘制回调函数格式说明eventdataobjtooltip显示函数HQChart代码地址 序 hqchart分时图是不带tooltip, 如果我们需要在PC端页面显示tooltip,我们可以通过注册绘制标题事件,来自己做一个div显示数据。 参考教程HQChart实战教程7-自定义显示手势点击K线显示信息 效果 步骤 1. 创建一个外部tooltip的div 在外

小银 2447

Python正则表达式

正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅python里面可以用,其他的语言也一样适用。正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配,常用的有都可以用于匹配字符串。

2301_81704383的博客 1322

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

linux正则表达式,正则表达式分类,元字符,基础正则表达式,扩展正则表达式,正则表达式案例

上文介绍了通配符1,本文介绍、总结和通配符有着诸多共同点的一类符号,即正则表达式(regular expression)。只是通配符的对象是文件、或目录,而后者对象是文本内容。在很多地方都有正则表达式的身影,它的作用是用来匹配指定式样的内容,个人理解为,正则表达式规定了指定式样pattern,能匹配该指定式样的字符或字符串即为内容,内容的来源可以是文件、某个标准输入等,使用正则表达式(regular expression)的目的就是匹配到了该内容。

有人说学习`这个`最好的时间是十年前,有人说最好的时间是现在,众说纷纭... 1821

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

shell 正则表达式详解

什么是正则表达式;为什么使用正则表达式;如何使用正则表达式;基本正则表达式;扩展正则表达式; 包含正则表达式例题。

weixin_48814356的博客 3003

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

linux正则表达式大全,正则表达式,正则表达式语法大全

正则表达式,正则表达式语法大全正则表达式分为两类:基本正则表达式:BRE扩展正则表达式:ERE基本正则表达式的元字符:字符匹配:.: 匹配任意单个字符;[]: 匹配指定范围内的任意单个字符[^]:匹配指定范围外的任意单个字符[:digit:],[:upper:],[:lower:],[:alpha:],[:alnum:],[:space:],[:punct:]匹配次数:用在要指定次数的字符后面,...

weixin_32955259的博客 2878

【正则表达式】{1} ——正则表达式的语法

参考资料:Python网络爬虫与信息提取(北京理工大学慕课) 正则表达式的语法: 正则表达式语法由字符和操作符构成 正则表达式的常用操作符: 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单个字符给出取值范围 [abc]表示a、b、c,[a-z]表示a到z单个字符 [^ ] 非字符集,对单个字符给出排除范围 [^abc]表示非a或b或c的单个字符 ...

Giyn 4783

正则表达式总结

每次使用到正则表达式的时候都要去翻书或者去网上查,很麻烦,抽出点时间做一个总结,方便以后用到的时候查阅。一、正则表达式的几个特殊符号1、^和$两个特殊的符号‘^’和’$’。他们的作用是分别指出一个字符串的开始和结束。例子如下:"^The":表示所有以"The"开始的字符串("There","The cat"等); "of despair$":表示所以以"of despair"结尾的字符串; "^ab

lmb55的专栏 2269
上一篇: Vue中的插槽slot使用
下一篇: link和import的区别
枫叶在飘呀
博客等级 码龄7年 96粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值