相关疑难解决方法(0)

忽略正则表达式匹配的 N 个嵌套括号内的逗号

这是我之前问题的直接后续,我得到了以下正则表达式;

const matches = text.match(/(?:\([^()]*(?:\([^()]*\)[^()]*)*\)|[^,])+/g);
Run Code Online (Sandbox Code Playgroud)

由此a,(b, b),c (aaa, (bbb, cccc, ddd)),d我得到

a
(b, b)
c (aaa, (bbb, cccc, ddd))
d
Run Code Online (Sandbox Code Playgroud)

但当我遇到以下情况时,它会失败a,(b, b),c (aaa, ((b b), cccc, ddd)),d,其中有 3 个嵌套括号,在剖析正则表达式如何工作后这是合乎逻辑的。

我尝试更新它以考虑另一级括号,我做了以下操作

a
(b, b)
c (aaa, (bbb, cccc, ddd))
d
Run Code Online (Sandbox Code Playgroud)

它有效(在线演示),但我不确定这是否是最佳解决方案。我也不知道它是否会涵盖所有情况。有人能证实吗?或者也许有更好的正则表达式。

我也在寻找一种方法来为给定数量的括号生成此类正则表达式。我有 2 和 3,但是 N 呢?如果我总是递归地重复以下部分,它会起作用吗(?:\([^()]*\)[^()]*)*?我知道正则表达式无法处理任意数量的嵌套括号,但我并不是在寻找这个。我想要一个给定的数字来生成正则表达式(使用 JS)并使用它。

javascript regex

5
推荐指数
1
解决办法
172
查看次数

仅当以下字符串与模式匹配时才匹配

我试图匹配以某个字符串开头的整个字符串,然后匹配任意数量的字符::,除非::匹配,否则仅接受 if 后跟该字符串CASE

例如:以 开头,后跟Linus::0 个或多个 1 字符的字符串,除非 if ::thenCASE必须跟在 else 后面,仅匹配 之前的所有内容::

Linus::AOPKNS::CASE将捕获整个字符串

Linus::AOPKNS将捕获整个字符串

Linus::AOPKNS::OK只会捕获Linus::AOPKNS

我想我必须使用积极的前瞻,但考虑到我想匹配 之前的任意数量的字符,我不太确定该怎么做::

python regex regex-lookarounds

4
推荐指数
1
解决办法
123
查看次数

展开循环,何时使用

我试图了解正则表达式中的展开循环。之间的最大区别是:

MINISTÉRIO[\s\S]*?PÁG
Run Code Online (Sandbox Code Playgroud)

MINISTÉRIO(?:[^P]*(?:P(?!ÁG\s:\s\d+\/\d+)[^P]*)(?:[\s\S]*?))PÁG
Run Code Online (Sandbox Code Playgroud)

在这种情况下:

http://regexr.com/3dmlr

我为什么应该使用第二个,如果第一个做相同的事情?

谢谢。

javascript regex

2
推荐指数
1
解决办法
312
查看次数

标签 统计

regex ×3

javascript ×2

python ×1

regex-lookarounds ×1