如何在Ruby中的内括号内捕获和删除文本

时间:2014-07-11 12:47:06

标签: ruby regex

我想从以下字符串

中使用内括号内的ruby值进行捕获
textbeforefirstparantheses( (value = "sdfsdf")   String countryCode, (value = USER.USER_NAME)   final String username,    final String grantType)

我想要

textbeforefirstparantheses(  String countryCode, final String username,    final String grantType)

我正在使用以下内容,但它会捕获外括号内的所有内容。

\(.*...\)

任何帮助?

注意:捕获文本还应包括inner(),如预期输出

所示

1 个答案:

答案 0 :(得分:2)

更容易不尝试一步完成。首先,匹配外括号内的内容,并在sub块内,进行辅助匹配以匹配内括号。

以下依赖于假设只有一对外括号,以便外部匹配中的贪心量词*将超出任何内部闭括号。

'textbeforefirstparantheses( (value = "sdfsdf")   String countryCode, (value = USER.USER_NAME)   final String username,    final String grantType)'
.sub(/(?<=\().*(?=\))/){|s| s.gsub(/\([^)]*\)/, "")}
# => "textbeforefirstparantheses(    String countryCode,    final String username,    final String grantType)"