前端-正则表达式,如何match多层嵌套的括弧

问题描述

正则表达式,如何match多层嵌套的括弧
有一个字符串,存在多对括号,他们可能是并列关系,也可能是嵌套关系,like this:

今年的雨水比较多(除了夏季(夏季天气炎热)),降雨量是往年的130%(特别是在江南地区)

现在要把最外层的第一对括号match出来,也就是要得到(除了夏季(夏季天气炎热))
正则表达式怎么写?

解决方案

正则没弄过,分析比较简单

    var sc = '(' ec = ')' count = 0 rst = []c;    var s = '今年的雨水比较多(除了夏季(夏季(天气)炎热)),降雨量是往年的130%(特别是在江南地区)'    var l = s.length;    for (var i = 0; i < l; i++) {        c = s.charAt(i);        if (c == sc && count == 0) rst[rst.length] = sc;        if (count > 0) rst[rst.length - 1] += c;        if (c == sc) count++;        else if (c == ec) count--;    }

解决方案二:
http://blog.csdn.net/wrq147/article/details/6142285

javascript 支持平衡组吗?

解决方案三:
http://stackoverflow.com/questions/5886386/how-can-this-regex-be-made-javascript-compatible

   str='今年的雨水比较多(除了夏季(夏季天气炎热)),降雨量是往年的130%(特别是在江南地区)'var parts = str.match(/[()]|[^()]+/g)    matches = []    balance = 0;for (var i=0 j=0; i<parts.length; i++) {    switch (parts[i]) {    case ""("":        if (balance === 0) {            j = i;        }        balance++;        break;    case "")"":        if (balance === 1) {            matches.push(parts.slice(j i+1).join(""""));        }        balance--;        if (balance < 0) {            throw new EvalError('parentheses are not balanced; unexpected ""(""');        }        break;    }}if (balance > 0) {    throw new EvalError('parentheses are not balanced; missing "")""');}alert(matches[0]);
时间: 2025-01-20 13:00:01

前端-正则表达式,如何match多层嵌套的括弧的相关文章

两种方法访问多层嵌套的frame

访问 ======================================== 在您的网站拜读了关于TWebBrowser的使用方法,但是一直有一个问题困扰我,就是如何取得frame嵌套frame的HTML的原码,我只是知道单个frame如何取得源码,但是多个frame嵌套就没有办法,请教一下! 答======================================== 要得到源代码,必须先得到frame.访问frame一般说来有两种方法: 1.通过WebBrowser的文档接口

如何递归处理多层嵌套列表

建立一个多层列表(即列表中存储列表)并输出列表项 如下图: 可以看出输出的只是输出了外列表 当然也可以多次循环输出每一个子项:如下图所示 返回栏目页:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/sjjg/ 注:isinstance(object, classinfo)为python的内置函数,用来判断对象的类型 这是三层循环,如果是很多次循环再用for循环输出就太麻烦了, 对于这种情况需要建立一个函数,递归循环输出子项 如下图

Android中Fragment多层嵌套时onActivityResult无法正确回调问题的解决方法_Android

前言: Fragment也可以使用startActivityForResult方法去打开一个Activity,然后在其onActivityResult方法中处理结果,可是当Fragment嵌套的时候,由于FragmentActivity的BUG导致只会回调最外那层Fragment的onActivityResult方法,于是乎当前Fragment就收不到结果了. BUG分析: 解决这个问题之前我们先通过源码分析一下是什么原因导致的,以22.2.1版本的support-v4库为例 我们先从Fragm

多层嵌套条件编译-怎样在Eclipse CDT设置自动缩进格式,来显示多层嵌套的条件编译?

问题描述 怎样在Eclipse CDT设置自动缩进格式,来显示多层嵌套的条件编译? 我正在用Eclipse CDT阅读一个非常大型项目的代码,代码中含有大量的嵌套的条件编译 #if #else #end 而且嵌套得非常深,最深的嵌套竟然高达10层多. 由于前面的程序员编写的代码没有注意缩进格式,导致后面的程序员接手这些代码,看到 这么复杂的代码,完全眼花了,逻辑完全乱了. 让我举一个稍微简单的例子来说明问题吧, 如下图是一个嵌套层次不是太深的例子: 大部分程序员看到这里,都得停顿下来,研究一下到

android 开发 json多层嵌套解析

问题描述 android 开发 json多层嵌套解析 向那种单层的数组我就会解析,向这种多层的我就不会了,都说是一层一层往下解析,就是不会,求大神指点,不要用Gson之类的框架,那些我会,谢谢 { "OK": 0, "obj": { "list": [ { "id": "8005285", "tour": { "id": "87962435", &

GridView多层嵌套和折叠与展开(修改适合自己使用)_实用技巧

Insus.NET近段时间应朋友的要求,写一个GridView多层嵌套和折叠与展开.这个功能的GridView多层嵌套没有问题,因为已经做了无限次数,但是折叠与展开的功能,却花上不少时间(网上找资料),虽找到资料可参考,还是了解明它,并修改适合自己程序使用.效果如下: 站点中多个页面使用,因此Insus.NET把它写在一个用户自定义控件ASCX上. 复制代码 代码如下: InsusMenu.ascx <%@ Control Language="VB" AutoEventWireu

asp.net提取多层嵌套json数据的方法_实用技巧

本文实例讲述了asp.net提取多层嵌套json数据的方法.分享给大家供大家参考,具体如下: 在.net 2.0中提取这样的json: 复制代码 代码如下: {"name":"lily","age":23,"addr":{"city":guangzhou,"province":guangdong}} 引用命名空间: using Newtonsoft.Json; using Newtons

Android Fragment多层嵌套重影问题的解决方法_Android

1解决bug的思想: //step1:当bug被发现(排除极低偶然性,单次性,开发工具导致) //step2:根据经验判断bug的重现场景,多次测试,直到精准的定位bug //step3:根据重现场景找到对应的代码 //step4:分析区域代码是否会影响到其他功能. //step5:做好数据的备份工作.(做好代码重构和恢复的准备,这样你才能肆无忌惮的捣鼓代码) //step6:修复代码的过程中,你会发现可能有多种解决方案.试着采取不影响主线的解决方案.以免影响到其他的代码. //step7:回顾

Fragment 多层嵌套方法调用问题的解决方案_Android

Fragment的产生与介绍 Android运行在各种各样的设备中,有小屏幕的手机,超大屏的平板甚至电视.针对屏幕尺寸的差距,很多情况下,都是先针对手机开发一套App,然后拷贝一份,修改布局以适应平板神马超级大屏的.难道无法做到一个App可以同时适应手机和平板么,当然了,必须有啊.Fragment的出现就是为了解决这样的问题.你可以把Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生