正则表达式 lookaround

Debian 12 安装nodejs(包括node、npm、npx、yarn、pnpm、cnpm、bun) 【代码】Debian 12 安装nodejs。 阅读详情

 

正则表达式

 

Lookaround

正则表达式中两个有用的结构: 向前查找 & 向后查找 (lookahead & lookbehind), 统称为 lookaround.

lookaround 去判断一个模式在字符串中是否存在, 不管匹配是否成功, 都不返回, 因此 lookaround 也称为断言(assertions).

lookaround 就像字符串的开始结束, 单词边界锚点(^ $ /b)一样, 是 "zero-width assertions".

 

Lookahead

 

Positive lookahead

my(?=here) 会匹配 myhere 成功,匹配其中的 my , (?=here) 用来判断 my 之后是否有 here ,有就匹配成功, 否则匹配失败; 匹配成功后 here 不返回;

my(?=here)$ 匹配 myhere 失败, 因为 (?=here) 只是判断 my 之后是否有 here, 他只是一种判定, 并不匹配, 因此 myehre 中 here

不能与 $ 匹配, 因此 my(?=here)$ 匹配 myhere 失败;

 

Negative lookahead

my(?!here) 若字符串中有 my, 且 my 后跟的不是 here, 则匹配成功

 

 

Lookbebind

 

Positive lookbehind

(?<=my)here 若字符串中有 here, 且之前是 my, 则匹配成功

 

Negative lookbind

(?<!my)here 若字符串中有 here, 且之前不是 my, 则匹配成功

 

JavaScript 中只有 lookahead, 没有 lookbehind

 

 

PHP 中有 lookahead 和 lookbehind

 

 

Lookaround 和 non-capturing group 的区别:

1, lookaround 是判断, 不匹配字符(不消耗字符);他只是判断字符是否存在, lookaround 之后的正则会当 lookaround 不存在接着匹配(匹配成功的情况)

2, non-capturing group 匹配, 但是不编号

 

non-capturing group 与 capturing group 的异同:

1, 两者都是分组

2, non-capturing group 分组不编号

3, capturing group 分组编号

4, non-capturing group 用在需要对一些字符组合构成一个分组(一个整体), 但是不需要从匹配结果中单独获取这个分组(non-capturing group 不编号); non-capturing group 性能会比 capturing group 好

 

 

 

正则表达式的效率:

1, Eliminated unnecessary use of capturing group.

2, Eliminated unnecessary use of alternation.

3, Eliminated inefficient use of lazy quantifier.

4, Implemented "unrolling-the-loop" efficiency technique.

5, A successful match is significantly faster.

6, Added non-capture group and beginning of string anchor.

7, A successful non-match is significantly faster.

8, Added non-capture group and word boundary anchor.

9, Linefeed added to regex to allow table to fit on screen.

10, Negligible performance improvement.

11, Reduced code size.

12, Added "i" ignore-case modifier.

13, The old and new regexes can match different text.

14, Removed unnecessary backslash escapes.

15, Removed unnecessary callback function.

16, Removed unnecessary local variables.

17, Added non-capture group and exposed literal starting text.

18, Literal RegExp object should be cached.

 

 

参考:

Lookaround

正则表达式的效率

 

华为OD机考双机位C卷 - 虚拟理财游戏(Java & Python& JS & C/C++ & GO ) 华为OD机考双机位C卷 - 虚拟理财游戏(OD上机考试双机位C卷)。提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。 阅读详情

相关推荐

CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

CHB-MIT癫痫EEG脑电数据处理CHB-MIT头皮脑电图数据介绍CHB-MIT头皮脑电图数据下载CHB-MIT头皮脑电图数据处理提取原始数据滤波(0.1~50hz)数据分块(时间窗口) CHB-MIT头皮脑电图数据介绍 该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。 从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是

AI_DOG的博客 1万+

正则表达式Lookaround特性的应用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34270865的博客 260

Windows系统下搭建MPI(并行计算)环境

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.youkuaiyun.com/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;W

weixin_43417960的博客 5752

正则表达式中的非捕获组(non-capturing)的用法

今天学了一下午的正则表达式(马士兵的那个视频教程),这RegularExpressions也算是一门小语言了,唯一让我不能理解的就是API里非捕获组中的那些用法,经过在论坛的查找学习,呵呵 ,现在终于理解了,下面与大家分享下。 捕获组(capturing group)是把多个字符当作一个单元对待的一种方式。通过把字符括在括号内创建捕获组。例如,正则表达式(dog)创建包含字母“d”、“o”

小帅的专栏 3176

C# 实现鼠标轨迹录制与回放自动化功能(附源码)

通过本文的介绍,相信大家已经掌握了鼠标轨迹录制与回放功能的实现方式。该功能在自动化测试和重复性工作中具有重要应用价值。后续可以进一步优化,增加更多扩展功能,形成一个完整的自动化工具。

weixin_72139050的博客 1755

Cadence Allegro实战:如何精准导入结构DXF文件避免安装偏差(附图层配置技巧)

本文详细讲解了在Cadence Allegro中精准导入结构DXF文件以避免安装偏差的实战技巧。核心在于导入前的单位校准、创建专用图层结构,以及基于坐标基准点的精确对齐方法。文章还分享了将DXF图形转化为正式板框和禁布区、高效管理图层以及向结构工程师导出DXF的完整流程,帮助PCB工程师确保设计与机械结构完美契合。

1a2s3d4f5g的博客 506

java正则表达式特殊构造(非捕获)

Special constructs (named-capturing and non-capturing) (?X)   X,as a named-capturing group (?:X)       X, as a non-capturing group (?idmsux-idmsux)    Nothing, but turns match flags i d m s u x on

ZHOUBANGDING的博客 868

基于深度学习的垃圾邮件识别

垃圾邮件的大量存在严重威胁着电子邮件系统的安全和效率。基于深度学习的垃圾邮件识别技术已经成为目前最有效的解决方案之一。本文将详细介绍使用深度学习技术进行垃圾邮件识别的方法,并提供相应的代码实现。 随着电子邮件的广泛应用,垃圾邮件的数量不断增加,传统的规则和统计方法已经无法满足对垃圾邮件进行准确识别的需求。深度学习技术以其强大的模式识别能力和自动特征提取能力成为解决垃圾邮件识别难题的有效工具。

一键难忘的博客 1093

正则表达式——环视(Lookaround)(几分钟学会环视)

环视(Lookaround) 正则大神主页:https://blog.youkuaiyun.com/lxcnn?t=1 正则表达式入门教程:https://deerchao.cn/tutorials/regex/regex.htm#top 上述两个博客的文章都是以C#为基础写作的,在普通捕获组与命名捕获组的混用上,与Java有所不同 正则运行测试网址:https://regex101.com/ 最开始学环视,是通过看《正则表达式必知必会》这本小册子,学完后感觉很模糊,好像会了,又好像不清楚,直到在网上看到下面这张图

勤奋猫的博客 6742

高温环境下(100℃以上)相机的几种保障方案

高温环境下相机保障措施摘要:针对120℃以上高温环境,相机需采取多重防护:1.散热设计采用金属机身、散热鳍片或风扇;2.关键部件选用耐高温材料(铝合金、特种玻璃);3.电子元件需军规级芯片并做三防处理;4.建议外接电源或耐高温电池。工业相机(如FLIR A655sc、Basler ace)及特种机型(Ximea xiQ)具备高温适应性,普通相机可加装隔热套件配合冷却系统。选择时需关注传感器信噪比和全局快门性能,并设置温度监控保护机制。注意高温会加速设备老化,需定期检测维护。(149字)

start_up_go的博客 1583

低功耗设计-Power Switch

power gating与power switch cell

m0_61544122的博客 1万+

正则表达式 Regular Expression 学习笔记(二):Grouping 集合

正则表达式中的 Grouping 已经越来越多,不整理一下经常会忘。 一、非抓取式分组 (Non-capturing grouping) 熟悉正则表达式的人都知道用'()'来把一段表达式与其他部分分开,'()'也可以嵌套使用。 这个就称之为 Grouping (分组)。分组有个副作用,即会在匹配引擎中产生一个相应的 序号来表示这个分组,以便后面再使用。在正则表达式中一般以'\n

requireonce的专栏 1199

基于自抗扰控制的虚拟同步发电机二次调频控制研究

摘要:本文针对高比例可再生能源并网导致的电力系统频率稳定性问题,提出基于自抗扰控制(ADRC)的虚拟同步发电机(VSG)二次调频控制策略。通过分析VSG工作原理和传统调频方法的不足,设计了非线性ADRC和线性ADRC两种控制器,详细阐述了参数整定方法。仿真结果表明,该策略能有效消除频率稳态偏差,提升系统抗扰能力,为分布式电源参与电网调频提供了新思路。 关键词:虚拟同步发电机;自抗扰控制;二次调频;频率调节;抗扰能力

huanghm88的专栏 243

正则表达式中的LookAround

这个东东有人把他直译为环视,到也还算贴切。因为本来这东西就分为head和behind两种类型。 分别表示找前面的和找后面的部分。然后又根据是想匹配括号里的内容还是不想匹配括号里的内容,分为了Positive和Negative两种。这样你就会发现目前已经分别在两个维度上有了分别两种分法,于是这就组合出了LookAround的全部四种情况: Positive Lookahead Negati...

笨小孩的专栏 623

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

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

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

java正则表达式从后往前匹配,正则表达式教程之前后查找lookaround详解

本文实例讲述了正则表达式教程之前后查找lookaround。分享给大家供大家参考,具体如下:注:在所有例子中正则表达式匹配结果包含在源文本中的【和】之间,有的例子会使用Java来实现,如果是java本身正则表达式的用法,会在相应的地方说明。所有java例子都在JDK1.6.0_13下测试通过。一、问题引入在HTML页面中,匹配出一对标签之间的文本,如匹配出页面的标签,即与之间的文本:文本:welc...

weixin_34005394的博客 2466

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

正则表达式_lookAround通配符[转载]

正则表达式--- Look around           在正则表达式中有一组特殊的通配符---- Look around通配符,其包含四个子类通配符: Table 2. Four Types of Look around

阿蒙的专栏 1597

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

正则表达式中的“环视”(lookaround)学习笔记

1.环视的含义 环视(lookaround)的含义 (?=...) 肯定顺序环视,子表达式能匹配右侧的文本 (?!...) 否定顺序环视,子表达式不能匹配右侧的文本 (?&lt;=...) 肯定逆序环视,子表达式能匹配左侧的文本 (?&lt;!...) 否定逆序环视,子表达式不能匹配左侧的文本 栗子: import re print(re.find...

acflair的专栏 1654

正则表达式之环视(lookaround)

参考链接正则基础之——环视(Lookaround) 环视(lookaround)说明环视是由《精通正则表达式》命名的,其他资料也有不同的叫法。 环视,大体分为顺序和逆序环视,以下是一个表格,表示了环视四种组合。 环视四种表示 哪一侧的表达式 是否匹配 环视分类 ?<= 左侧 是 逆序 ? 左侧 否 逆序 ?= 右侧 是 顺序 ?!

iszengmh的博客 1630

正则表达式学习(十一)前后查找lookaround

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33893473的博客 114

正则表达式之环视(Lookaround)[转]

[b]1 环视基础[/b] 环视只进行子表达式的匹配,不占有字符,匹配到的内容不保存到最终的匹配结果,是零宽度的。环视匹配的最终结果就是一个位置。 环视的作用相当于对所在位置加了一个附加条件,只有满足这个条件,环视子表达式才能匹配成功。 环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来就有四种环视。顺序环视相当于在当前位置右侧附加一个条件,而逆序环视相当于...

{丸の子} 178

正则表达式的四向处理

“四向处理”指很多正则表达式引擎所支持的正负 Lookahead 和 Lookbehind 功能。Lookahead: (?=...), (?!...)Lookbehind: (?Lookaround constructs match a location in the text wherethe subpattern would match (lookahead), would not

azheanda的专栏 440

正则表达式Lookaround--前后查看

Like anchors, lookaround groups match at a certain position rather than certain text. Lookahead will try to look forward at the current position in the string, while lookbehind will try to look bac...

weixin_33972649的博客 154

一文带你读懂:Google 和 JDK 的正则表达式引擎有何不同

Together for a Shared future开发经验最近我在实际工作中,接手了兄弟部门开发的一个模块,然后有部分用户提了一个问题到我这里。经过一顿排查,原因竟然是:开发人员选择了不同的正则表达式引擎,导致了用户使用上的体验差异。正则表达式的基础,大家可以通过菜鸟教程(https://www.runoob.com/regexp/regexp-intro.html...

Diligence is the mother of success. 1362

正则表达式学习(三、环视(lookaround))

1. 环视结构(lookaround)不匹配任何字符,只匹配文本中的特定位置,这一点与单词分界符‘\b’, 锚点'^', '$'相似。   2.顺序环视(lookahead)  顺序环视从左至右查看文本,尝试匹配子表达式,如果能匹配,就返回匹配成功的信息。   3.肯定型顺序环视(positive lookahead)  用特殊的序列(?=...)表示,如:(?=\d), 它表示如果当...

MooN's Blog 287
上一篇: Vim 退出时保存上次状态
下一篇: JavaScript Observer Pattern 接口
phpandjava
博客等级 码龄18年 60粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值