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

Che*_*yne 3 ruby regex

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

 1_1_OS_And_Network_Specific_Config
Run Code Online (Sandbox Code Playgroud)

我希望这个字符串能够像

 1.1 OS And Network Specific Config
Run Code Online (Sandbox Code Playgroud)

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

\d_\d
Run Code Online (Sandbox Code Playgroud)

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

有人可以帮忙吗?

Tim*_*ker 8

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

subject = subject.gsub(/(?<=\d)_(?=\d)/, '.')
Run Code Online (Sandbox Code Playgroud)

(?<=\d)并且(?=\d)外观断言.

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

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

subject = subject.gsub(/_/, ' ')
Run Code Online (Sandbox Code Playgroud)