首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

正则分组】栈结构与括号匹配

前言 在研究正则表达式中,遇到了一个需求。通过本文来梳理和记录一下解决方案,并 分享给大家。对于正则表达式而言,一个括号就对应一个分组。...现在期望解析正则表达式,获取分组情况: (((\d{1,4})年)(\d{1,2}))月(\d{1,2})日 比如,上面的正则分组情况如下:简单来说,就是提取所有的匹配括号中内容。...=\))'); List parts = src.split(exp); } 所以现在我们需要做的是如何匹配括号的闭合,并提取出闭合括号中的内容。 3....括号闭合匹配思路 对闭合性的校验,最常用的当属栈结构 。...两者是匹配的,故 出栈 ,之后栈中只有没有元素,如场景9: 这样我们就得到了 0 和 5 索引是括号匹配的区间,也记录下来: 后面同理,根据 ) 字符对比,通过 ( 字符的出入栈情况,我们就可以获取到括号匹配的空间

1.2K40
您找到你想要的搜索结果了吗?
是的
没有找到

正则表达式 -- 捕获括号

jQuery中充斥着大量的正则表达式,在jQuery不断改良的过程中,正则表达式的用法也在发生着变化。 其中变化最大的就是(?:pattern)的使用,当然还有?家族的一系列表达式用法。...., $9 再次访问到 非捕获括号是什么?捕获括号又是什么? 先从match(), exec(), test()这三个方法说起,捕获括号在exec()的介绍中有涉及。...描述: 如果正则表达式包含g标志,则该方法返回一个包含所有匹配结果的数组。 如果正则表达式没有g标志,返回和exec(str)相同的结果。..."ca"] 至于什么时候捕获括号,什么时候非捕获括号就要视情况而定了。灵活的使用这两者会有不一样的收获。 如果有兴趣,可以看一下下面的正则表达式 rquickExpr = /^(?...:\s*()[^>]*|#([\w-]+))$/ 这个正则表达式是jQuery的入口。

1.2K10

正则】964- 正则表达式的括号如何使用?

最近再一次重温老姚大佬的《JavaScript 正则表达式迷你书》 , 并将核心知识点整理一遍,方便复习。 原书写得非常棒,建议看下原书啦。...地址:https://github.com/qdlaoyao/js-regex-mini-book 回复“8”加入面试题分享群 简单理解:括号提供了分组,便于我们使用它。...通常有两种引用情况:在JS代码中引入,和在正则表达式中引入。 分组和分支结构,主要是强调括号内是一个整体,即提供子表达式。 分组如 /(ab)+/g 匹配连续出现的 ab 。...按照开括号的顺序: let r = /^((\d)(\d(\d)))\1\2\3\4$/; let s = "1231231233"; r.test(s); console.log([RegExp.$1...向后引用 \n 表示后向引用, \1 是指在正则表达式中,从左往右数第1个 () 中的内容;以此类推, \2 表示第2个 (), \0 表示整个表达式。

91130

学习正则(第三天)看懂括号

Dear,大家好,我是“前端小鑫同学”,长期从事前端开发,安卓开发,热衷技术,在编程路上越走越远~ 对于编程来说空号的作用往往就是用来分组的,比如说在写一些比较长的条件判断的时候经常会用到,我们一起来看一下正则表达式中的括号...这里我们就需要用到本篇要说到的括号了,请看下图中(2)的正则: ​ 02....使用分组提取/替换数据 这里我们沿用正则表达式迷你书v1.1版的案例(日期)相关,如常见的日期格式通常是yyyy-mm-dd,我们用正则表示一下,请看下图: ​ 我们接着来增加括号准备提取数据,请接着看图...非捕获情况 即不在API里面引用,也不在正则里反向引用的话我们就需要使用到非捕获括号(?:p)和(?:p|p|p)。 ​...可以看到我们原来的分组2变成了分组1,而原来的分组1变成了原始的括号的作用。

30250

shell中的括号(小括号,中括号,大括号

一、小括号,园括号()   1、单小括号 ()     ①命令组。括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。...用作正则表达式的一部分,描述一个匹配的字符范围。作为test用途的中括号内不能使用正则。     ④在一个array 结构的上下文中,中括号用来引用数组中每个元素的编号。  ...②支持字符串的模式匹配,使用=~操作符时甚至支持shell的正则表达式。字符串比较时可以把右边的作为一个模式,而不仅仅是一个字符串,比如[[ hello == hell? ]],结果为真。...④bash把双中括号中的表达式看作一个单独的元素,并返回一个退出状态码。 三)大括号、花括号 {}   1、常规用法。     ①大括号拓展。(通配(globbing))将对大括号中的文件名做扩展。...与小括号中的命令不同,大括号内的命令不会新开一个子shell运行,即脚本余下部分仍可使用括号内变量。括号内的命令间用分号隔开,最后一个也必须有分号。

3.9K10

Jmeter 正则表达式提取括号中的文本内容

不过Jmeter里很多地方的约束条件和断言都是需要正则表达式来匹配的,所以大家还是要学习一下正则表达式的语法,以便更好更效率的完成测试内容。下面简单介绍一下常用的语法,这次先写一半,下次再补另一半。...那这里我就直接从字符匹配的语法来进行实例讲解了,可以下载网站里的正则表达式测试工具,直接在工具里体验。 下面列举元字符语法: 1....是重复零次或一次,{n} 是重复n次,{n,}是重复n次到多次,{n,m}是重复n次到m次 16. [] : 括号里的字符会被匹配,比如[ab]匹配a或b字符,[,?]匹配逗号或问号 17....实际栗子   1、提取的文本如下: { "code": "0", "args": null, "message": null, "value": "顺丰(SF)" }   需求:提取括号中的文本...,但是不要提取两边的括号   知识点: ?

1.4K30

第三章 正则表达式括号的作用

第三章 正则表达式括号的作用 不管哪门语言中都有括号正则表达式也是一门语言,而括号的存在使这门语言更为强大。 对括号的使用是否得心应手,是衡量对正则的掌握水平的一个侧面标准。...括号的作用,其实三言两语就能说明白,括号提供了分组,便于我们引用它。 引用某个分组,会有两种情形:在JavaScript里引用它,在正则表达式里引用它。 本章内容虽相对简单,但我也要写长点。...假设格式是yyyy-mm-dd的,我们可以先写一个简单的正则: var regex = /\d{4}-\d{2}-\d{2}/; 然后再修改成括号版的: var regex = /(\d{4})-(\...如果只想要括号最原始的功能,但不会引用它,即,既不在API里引用,也不在正则里反向引用。此时可以使用非捕获分组(?:p),例如本文第一个例子可以修改为: var regex = /(?...小结 正则中使用括号的例子那可是太多了,不一而足。 重点理解括号可以提供分组,我们可以提取数据,应该就可以了。 例子中的代码,基本没做多少分析,相信你都能看懂的。

1.6K60

一日一技:一个括号两种意思,正则表达式奇怪的小括号

在Python里面,当我们要从一段正则表达式中提取出一部分内容的时候,我们可以把这部分内容用小括号包起来。...在这个例子里面,小括号的意思是“分组”。 但是,在正则表达式里面,小括号还有另外一个意思,那就是把几个符号放在一起,作为一个整体。...此时,正则表达式本身支持使用括号来表示: (密码|口令)(.*?)$ 在正则表达式里面,小括号内部的 |左右两侧的多个字符串会作为整体,这样就能表示 密码(.*?)$或 口令(.*?)$了。...但是,正则表达式里面作为整体的小括号,与Python里面用来分组的小括号发生了冲突,于是我们会发现提取出来的内容并不是我们想要的: ?...那么有什么办法让 (密码|口令)只实现正则表达式里面的作为整体的功能,不实现Python里面的分组功能呢?这个时候就需要使用正则表达式里面的一个组合符号 ?:了。 请大家对比下面三个结果: ?

2.1K40
领券