Ruby Regex替换两个数字之间的字符

时间:2012-12-12 15:54:52

标签: ruby regex

我正在尝试编写一个删除下划线的字符串清除程序,但在数字之间用字符替换它们(即,当字符串中有版本号时)。

 1_1_OS_And_Network_Specific_Config

我希望这个字符串像

一样出现
 1.1 OS And Network Specific Config

我可以很容易地替换下划线,但是我很难匹配数字之间的字符来替换点。

\d_\d

似乎将两位数与下划线相匹配..但如果有三位,如3.4.1则不然。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:8)

首先,替换数字之间的下划线:

subject = subject.gsub(/(?<=\d)_(?=\d)/, '.')

(?<=\d)(?=\d)lookaround assertions

他们确保在当前位置之前((?<=\d))和之后((?=\d))有一个数字,但它们实际上并不成为匹配的一部分。

然后,删除其余的下划线:

subject = subject.gsub(/_/, ' ')