Regexp替换括号之间的所有内容

时间:2015-05-20 10:48:37

标签: ruby regex replace parentheses

我想知道是否有人可以帮助我找出替代括号内所有内容的正则表达式。

我的例子是:

grouping(elllo)

grouping(function() {
   console.log("hello")
})

所以,我想替换与()匹配的grouping内的所有内容。

我只进入了这个阶段:

\bgrouping(\(([^)]+)\))

但是,它与第一个)上的所有换行符和停靠点都不匹配。

2 个答案:

答案 0 :(得分:1)

正则表达式:

1||1#2||3#||4
1||2||r||f

替换字符串:

\b(grouping\()(?:\([^()]*\)|[^()])*\)

DEMO

答案 1 :(得分:1)

您可以将Ruby中的平衡括号与条件匹配:

\bgrouping(\((?>[^()]|(\g<1>))*+\))

请参阅demo

以下是如何在Ruby中执行此操作:

rx = /\bgrouping(\((?>[^()]|(\g<1>))*+\))/
txt = "grouping(elllo)\n\ngrouping(function() {\n   console.log(\"hello\")\n})"
puts txt.gsub(rx) { |m| m.gsub($~[1], '(NEWTEXT)') }

请参阅IDEONE demo