如何匹配左右括号并在Ruby中的正则表达式中替换两个字符?

时间:2012-09-06 01:55:27

标签: ruby regex

我试图模仿匹配以下内容并替换" c"对于左括号和右括号。

实施例:   string ="(a,b)"

所以我希望字符串出现像" ca,cb"我打电话给string.sub(//,"c")之后。我已经尝试了string.sub(/[()]/,"c"),但这只会导致" ca,b)"。如何模式匹配左右括号?

3 个答案:

答案 0 :(得分:3)

ruby-1.9.3-p125 :001 > string = "(a,b)"
 => "(a,b)" 
ruby-1.9.3-p125 :002 > string.gsub(/[()]/, "c")
 => "ca,bc" 

注意gsubsub进行一次替换; gsub(“global sub”)尽可能多地替换它。

答案 1 :(得分:3)

对于单个字符替换,尝试tr:

'(a,b)'.tr '()', 'c'

答案 2 :(得分:0)

如果你的预期输出真的是"ca,cb"而不是"ca,bc",这是迄今为止给出的其他答案的结果,那么以下应该可以做到这一点:

1.9.3-p194 :001 > "(a,b)".tr('(', 'c').gsub(/(.)\)/, 'c\1')
=> "ca,cb"

您尚未指定如何处理空括号或多个级别,因此不会考虑这些情况。