2015-05-20 3 views
1

Я хотел бы знать, может ли кто-нибудь помочь мне разобраться с регулярным выражением, которое заменяет все в круглых скобках.Regexp заменить все между скобками

Мои примеры:

grouping(elllo) 

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

Итак, я хотел бы заменить все внутри () согласования grouping.

я только пошел на этот этап:

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

Однако это не соответствует все переводы строк и останавливается на первом ).

ответ

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

1

Regex:

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

Замена строки:

\1foo) 

DEMO

+1

также увидеть Rubular ссылку http://www.rubular.com/r/LKzxJRz0In –

Смежные вопросы