javascript - 如何在正则表达式中输入 "count characters"?

标签 javascript regex

我不确定“计数”这个词是否正确,因为对我来说有多少并不重要,但让我解释一下。我的数据将采用如下格式: (hi,(1,2),hey),(yo,(3,(rawr),4),howdy) 并且我无法控制有多少维度有。我想获取最低组
["hi", Array[], "hey"]["yo", Array[], "howdy"] 因此,如果有一种方法可以“计数”,我可以计算左括号,然后计算右括号,当它达到 0 时,正则表达式就结束了。例如:

(hi,(1,2),hey),(yo,(3,(rawr),4),howdy)
1---2---1----0-1---2--3----2--1------0

话虽这么说,我不相信计数是可能的,但我想要的是替代解决方案。这是我到目前为止所拥有的 /\([^\(]*?\)/ 但只返回每个低级别组中的最高级别组,即 (1, 2)(rawr)

最佳答案

您可以使用堆栈来跟踪()

Array.reduce(
    '(hi,(1,2),hey),(yo,(3,(rawr),4),howdy)',
    function(x,y){
        if(y=='(')
            return [x[0]+1, x[1]+(x[0]+1)]
        else if(y==')')
            return [x[0]-1, x[1]+(x[0]-1)]
        else
            return [x[0], x[1]+'-']
    },
    [0,'']
)[1]

firebug 控制台中尝试一下。

关于javascript - 如何在正则表达式中输入 "count characters"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310149/

相关文章:

javascript - jQuery 函数 Mouseenter 和 Mouseleave 不工作

动态输入中的javascript函数

javascript - 如何在javascript中一次从数组中删除多个选定的项目

php - CakePHP 验证正则表达式

html - 用于 html 的 Perl 正则表达式

javascript - 为什么 thenextweb 团队页面包含一个带有 <script> 标签的外部 php 文件

javascript - 在 iFrame 上从父级获取 CSS

PHP正则表达式忽略字符串中的负数

regex - 我可以在 char16_t 字符串上使用 STL 正则表达式库吗?

regex - 为什么我的非贪婪 Perl 正则表达式仍然匹配太多?