添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
首页
学习
活动
专区
工具
TVP
发布

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

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

1.1K 4 0

正则 表达式 -- 捕获 括号

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

1.2K 1 0

正则 】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 表示整个表达式。

886 3 0

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

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

291 5 0

leetcode 22 括号 生成 js 实现

括号 生成 数字 n 代表生成 括号 的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号 组合 示例 1: 输入:n = 3 输出:["((()))","(()())","(())(...n, 且右 括号 的数量要一直小于或等于左 括号 * - 针对组成的 括号 字符串的每一个位置字符来说,要么是左 括号 ,要么是右 括号 , 具体这个位置应该是左还是右,看上面的规则而定 * - 所以想到,我可以递归地往每个位置放左和右 括号 .../solution/jsshua-ti-mian-shi-ti-jie-by-distracted-br3o6/ // 当左 括号 数量小于n时,可以添加一个左 括号 ,但是 括号 总数不增加 // 当右 括号 数量小于左 括号 时...,可以添加一个右 括号 括号 总数加1 // 当 括号 总数等于n时,返回当前缓存数组中的值 var generateParenthesis = function(n) { const res = []...; // index 代表当前 括号 对数,left,right分别代表左右 括号 数,temp 代表当前生成的临时的 括号 数组 const dfs = (index, left, right,

1.4K 2 0

js 正则 校验

58 1 0

js 正则 小结

1,\ 斜杠用于转义,在 js 正则 里,只有一些元字符(*,?,.等)和\本身需要转义,其他的不需要转义,如果其他的字符前面使用了\,可能会产生负面影响,比如\b,\t这些有特殊含义的转义。...此外,在 js 正则 中,\还有一个用处在于使用new RegExp()形式创建 正则 对象时,比如new RegExp('a\*a'),其中*是乘以的意思, js 引擎在解析该 正则 表达式字符串时,会消耗掉这个斜杠,...2 ^ 该元字符比较简单,就是表示该 正则 是从字符串的首字符开始匹配的,有一个地方需要注意的是,如果该 正则 表达式加了m标记时,匹配到了行分隔符的时候就会结束。然后会在下一行继续匹配。...$n ()代表捕获分组,x代表的表达式所匹配的内容可以在x所有的 正则 中或者其他地方使用。...$&是一个特殊的变量,他代表是整个 正则 表达式匹配到的结果。也就是xy。 7 (?:x) 非捕获分组,也就是()中的表达式捕获到分组不可在其他地方使用。'x'.replace(/(?

7.6K 5 0

js 爬虫, 正则

大概看了下,是 js 加载的,而且数据在 js 函数中,很有意思,就分享出来给大家一起看看! ?...今天我们的目标是上图红框部分,首先我们确定这部分内容不在网页源代码中,属于 js 加载的部分,点击翻页后也没有json数据传输! ?...但是发现有个 js 的请求,点击请求,是一行 js 函数代码,我们将其复制到json的视图查看器中,然后格式化一下,看看结果 ?...只是其内容,需要在进行处理一下,我们写到代码中看看 开始写代码 先导入库,因为最终需要从字符串中截取部分,所以用requests库获取请求, 正则 re匹配内容即可。然后我们先匹配出上述3项 ?

7.6K 2 0

括号 匹配算法的 JS 简单实现

括号 匹配算法 (1)(2)(3)(4)(5) 观察上面这组 括号 ,不难发现当 ) 的左侧不存在另一个 ) 时(即未发生嵌套时),最靠近它的 ( 便是和它所对应的 括号 。...由提供的右 括号 位置开始向左遍历字串,当找到第一个 ( 的时候,我们便可以断定这个 ( 就是我们要找的左 括号 ,代码大概长下面这样子: function findL(str, pos) { let...} 但在出现 括号 嵌套时,事情似乎变得复杂了起来—— ((1))((2))((3)) 最先出现在 ) 左侧的 ( ,可能不再是与其对应的 括号 了。...不过,最内层的那对 括号 (即示例中最靠近数字的那几对),似乎依然符合我们之前所找到的规律。 既然最内层的 括号 依然能够被匹配,似乎也不是无药可救。既然数字能够被跳过,内部嵌套的 括号 也应该可以被跳过才对。...我们通过递归来匹配内部嵌套的 括号 并将其跳过。

5.1K 5 0