如何在gsub中使用通配符?

时间:2014-11-29 19:12:40

标签: ruby

我使用了一些强力代码来制作罗马数字转换器。我看到5s和10s的干燥机会

 out.gsub!('IVI','V')
 out.gsub!('IXI','X')
 out.gsub!('IXLI','XL') 

所以我想做的就是......

out.gsub!(/'I'.'I'/,/./)

哪里'。'是两个'之间的任意数字的字符

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您要找的是/I(.*)I/,它会将字符串分组为Is。您可以通过\1访问该代码,生成out.gsub!(/I(.*)I/, '\1')

查看正则表达式的文档。 http://ruby-doc.org/core-2.1.1/Regexp.html

答案 1 :(得分:1)

您可以使用\1\2等来使用正则表达式的捕获:

outs = 'IVVVVI'
out.gsub!(/^I(.*)I$/, '\1')
# => "VVVV"

答案 2 :(得分:0)

这可能值得尝试:

out = 'IVVVVI'
out.tr('I','')
# => "VVVV"