我正在尝试删除括号内的文本(以及括号本身),但是在括号内有圆括号的情况下遇到问题.这是我正在使用的方法(在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)