正则表达式:从字符串中获取最后一个括号的值

时间:2019-07-02 10:33:40

标签: javascript typescript

我正在尝试从字符串中提取由方括号界定的最后一组。该字符串可能类似于以下变体之一:

String                             ' Extracted sub
--------------                     ' -------------
Some (text)                        ' text
Some (text) (here)                 ' here

我需要字符串最后一个右括号之间的子字符串

我已经尝试过此正则表达式代码,但它总是从字符串的第一个括号中获取值

public static getValueInsideBracket(str: string): string {
    let isStringHaveBrackets: string[];
    if (!str) {
      return '';
    }
    isStringHaveBrackets = str.match(/(.*)\(.*\)/);
    if (isStringHaveBrackets) {
      return str.match(/\(([^)]+)\)/)[1];
    }
  }

2 个答案:

答案 0 :(得分:2)

尝试一下

A

说明: 在字符串的末尾查找一个开放字符(并匹配其中所有不是(或),然后有)的字符。

答案 1 :(得分:0)

尝试这样。

\(([^)]+)\)?(){1}$

您错过添加?(){1}$。这将使您最后一次出现

function getValueInsideBracket(str){
    if (!str) {
      return '';
    }
    let isStringHaveBrackets = str.match(/(.*)\(.*\)/);
    if (isStringHaveBrackets) {
      return str.match(/\(([^)]+)\)?(){1}$/)[1];
    }
  }
console.log(getValueInsideBracket('hi (some) (text) (read)'))