删除多个括号之间的字符串

时间:2016-03-11 07:01:37

标签: regex

我想删除句子中所有括号之间的字符串。

  

输入:他(她)希望(欲望)删除(删除)中间的文本   所有括号。

     

输出:他希望删除所有文本   括号中。

我尝试使用\(。* \)正则表达式,但它提供的输出如下:他在所有括号之间发短信。对此可能适当的正则表达式是什么?

4 个答案:

答案 0 :(得分:3)

那是因为.*greedy 这意味着正则表达式引擎会在匹配模式时尝试匹配尽可能多的字符。

解决方案 - :

使用此正则表达式模式 - \(.*?\)代替\(.*\) 这将使正则表达式引擎匹配匹配模式所需的最小字符数。

答案 1 :(得分:2)

另一种解决方案是:

\([^)]*\)

这意味着:

  1. 查找括号
  2. 任何不是括号的内容
  3. 另一个 括号

答案 2 :(得分:1)

更改正则表达式如下:

 \(.*?\)
  • .*?匹配任何字符(换行符除外)
    • 量词:*?在零和无限次之间,尽可能少,根据需要扩展[懒惰]

Demo

答案 3 :(得分:0)

使用此功能。

var str = "He (she) wants (desires) to remove (delete) text in between all parentheses.";

alert(str.replace(/\s*\(.*?\)\s*/g, ' '));