用 gsub 只替换字符串中的整数

Replace only the integers in a string with gsub

我试图去掉这个字符串中的整数,但保留浮点数。我已经在线尝试了下面的正则表达式并突出显示了正确的部分,但是当我使用 gsub

时会注意到
tops = "17500 dw.sapAGZ_D00 pf=/usr/sap/A  8.0 17488 dw.sapAGZ_D00 pf=/usr/sap/A  7.1 17489 dw.sapAGZ_D00 pf=/usr/sap/A  7.0 17493 dw.sapAGZ_D00 pf=/usr/sap/A  5.9 17490 dw.sapAGZ_D00 pf=/usr/sap/A  5.7 17495 dw.sapAGZ_D00 pf=/usr/sap/A  5.4 17499 dw.sapAGZ_D00 pf=/usr/sap/A  5.0 17480 dw.sapAGZ_D00 pf=/usr/sap/A  4.3 17492 dw.sapAGZ_D00 pf=/usr/sap/A  4.0"

tops.gsub(/(?<=\s|^)\d+(?=\s|$)/, '--- ')

puts tops ;

您的搜索模式很好(对于特定输入 - 例如,我猜它不会正确处理负整数),但 gsub 只是不改变接收者(原始字符串) - 它returns 一个包含所有替换的新版本。

因此,要么使用 gsub!,要么将字符串重新分配给另一个变量(如果您也需要原始字符串)。