当前位置: 首页 > 知识库问答 >
问题:

获取括号之间的文本

施雅懿
2023-03-14

在Javascript中,我希望得到一个字符串,表示两个括号之间的所有文本,即使该字符串包含更多的括号。

其工作如下:

"(a)(b)(c)"。匹配(某物);

[“a”、“b”、“c”]

或者

“a”

“((a)(b)(c))”。匹配(某物);

(a)(b)(c)

共有2个答案

章昆琦
2023-03-14

你在乎父母是否匹配吗?如果是这样,您将不得不使用堆栈,而不能使用正则表达式。

试着这样做:

var str = "aaa((0)12(2))bbb";
var stack = [];
var result  ="";
var start = false;

for (var i = 0; i < str.length; i++) {
  switch (str[i]) {
    case '(':
      stack.push('(');
      if (!start) {
        start = true;
        continue;
      }
      result += str[i];
    break;
    case ')':
      if (stack[stack.length - 1] === '(') {
        stack.pop();
        if (stack.length === 0) {
          start = false;
          continue;
        }
        result += str[i];
      } else {
        //not balanced!
      }
      
    break;
    default:
      if (start){
        result += str[i];
      }
  }
}

console.log(result);
贺飞
2023-03-14

这应该可以做到:

(?:\()[^\(\)]*?(?:\))
  • \(匹配开括号
  • \)匹配后括号
  • [^\(\)]匹配除了更多括号以外的任何内容
  • *?在上述模式中添加一个0或更多次的量词(因而变得懒惰?

尝试:

your_string.match(/(?:\()[^\(\)]*?(?:\))/g)
 类似资料:
  • 我想在像这样的文本中插入()并将它们放入数组中,但里面可能有一些嵌套的括号。 文本: 应该这样处理: 我怎么能这么做?

  • 如何使用JavaScript中的正则表达式从下面句子中两个圆括号之间检索单词? “这是(我的)简单文本”

  • 在括号()之间获取文本的Reg表达式,我尝试过,但我没有得到RegEx。对于这个例子 例子:-

  • 问题内容: 如何从中提取字符串并使用模式匹配或其他方法。例如,如果文本是` “您好(Java)” 然后如何获得。 谢谢。 问题答案: 试试这个: 要么

  • 我需要在和之间匹配文本示例: 我需要匹配这个文本 简单正则表达式将正常工作,直到我在文本中放置一些 文本内的卷括号配对以匹配。 有没有可能通过正则表达式来解决这个问题?

  • 问题内容: 我需要某种方式来捕获方括号之间的文本。因此,例如,以下字符串: 可用于创建以下数组: 我有以下正则表达式,但它仅捕获第一个实例,因此: 如何获得所需的输出?请注意,方括号从不嵌套,因此不必担心。 问题答案: 匹配所有带括号的字符串: 如果要不带括号的字符串: 不带括号的替代版本,较慢的匹配版本(使用“ *”代替“ [^]”):