删除括号内的文本(括号中的括号)

Ten*_*ack 6 ruby regex string

我正在尝试删除括号内的文本(以及括号本身),但是在括号内有圆括号的情况下遇到问题.这是我正在使用的方法(在Ruby中):

sentence.gsub(/\(.*?\)/, "") 
Run Code Online (Sandbox Code Playgroud)

这工作正常,直到我有一句话,如:

"This is (a test (string))"
Run Code Online (Sandbox Code Playgroud)

然后上面的扼流圈.任何人都知道如何做到这一点?我完全难过了.

Jos*_*Lee 10

看起来你需要贪婪,删除 ?

>> "This is (a test (string))".gsub(/\(.*\)/, "")
=> "This is "
Run Code Online (Sandbox Code Playgroud)

这使它成为最后一个)而不是第一个.但是,它不会捕获嵌套,因为正则表达式无法做到这一点.


gle*_*ald 10

一个approch是从内到外替换括号组:

x = string.dup
while x.gsub!(/\([^()]*\)/,""); end
x
Run Code Online (Sandbox Code Playgroud)