【问题标题】:Get the contents with the brackets using regular expression使用正则表达式获取带括号的内容
【发布时间】:2014-04-20 13:36:47
【问题描述】:

我是正则表达式的新手。我正在尝试使用正则表达式获取括号内的内容

例子

  1. 7+(4*6) ---> (4*6)
  2. (44/(2*( 1 + 3))) ----> ( 1 + 3)
  3. (54-(23+12)) ----> (23+12)

所以,我的预期输出以( 开头,后跟数字,后跟空格(可能不是),然后是四个运算符中的任何一个(+、-、*、/),然后是空格(可能不是),然后是).

提前谢谢...

【问题讨论】:

    标签: javascript jquery regex regex-negation regex-lookarounds


    【解决方案1】:

    试试这个变种

    \((?!.*\().*?\)
    

    【讨论】:

      【解决方案2】:
      \.*(\([^()]*\))\.*
      

      还有你最好的pal

      【讨论】:

      • 上面的代码究竟做了什么?它有什么用处?
      • 这是您请求的正则表达式。它查找没有嵌套括号的括号。
      【解决方案3】:

      试试这个:

      \( *\d+ *[-+*/] *\d+ *\)
      

      意思是:

      • 从字面上匹配字符“(”。
      • 从字面上匹配字符“”。
        • 在 0 次和无限次之间,尽可能多,按需回馈(贪婪)。
      • 匹配单个数字 0..9
        • 在 1 次和无限次之间,尽可能多地回馈(贪婪)。
      • 从字面上匹配字符“”。
        • 在 0 次和无限次之间,尽可能多,按需回馈(贪婪)。
      • 匹配列表“-+*/”中存在的单个字符。
      • 从字面上匹配字符“”。
        • 在 0 次和无限次之间,尽可能多,按需回馈(贪婪)。
      • 匹配单个数字 0..9
        • 在 1 次和无限次之间,尽可能多地回馈(贪婪)。
      • 从字面上匹配字符“”。
        • 在 0 次和无限次之间,尽可能多,按需回馈(贪婪)。
      • 从字面上匹配字符“)”。

      例子:

      var regExp = /\( *\d+ *[-+*/] *\d+ *\)/;
      "7+(4*6)".match(regExp)[0];            // "(4*6)"
      "(44/(2*( 1 + 3)))".match(regExp)[0];  // "( 1 + 3)"
      "(54-(23+12))".match(regExp)[0];       // "(23+12)"
      

      【讨论】:

        【解决方案4】:

        您可以使用前瞻来抓取最里面的括号和封闭的文本。

        这个正则表达式应该可以工作:

        \((?=[^(]*$)[^)]*\)
        

        测试:

        '7+(4*6)'.match(/\((?=[^(]*$)[^)]*\)/);
        //=> ["(4*6)"]
        
        '(44/(2*( 1 + 3)))'.match(/\((?=[^(]*$)[^)]*\)/);
        //=> ["( 1 + 3)"]
        
        '(54-(23+12))'.match(/\((?=[^(]*$)[^)]*\)/);
        //=> ["(23+12)"]
        

        在线演示:http://regex101.com/r/fQ2iZ2

        【讨论】:

          猜你喜欢
          • 2011-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-05
          相关资源
          最近更新 更多