字符串最后3个字符的Ruby正则表达式

字符串最后3个字符的Ruby正则表达式,ruby,regex,Ruby,Regex,我有这个字符串:$29.99。我想删除小数点,并在小数部分99周围加上标记:$2999 不过,格式可以改变;小数点可以是逗号而不是点:,99 另外,考虑到货币标签可以是可变长度的(R$,$,Rs等),可以使用正则表达式提取货币标签。str='$29.99' 结果=str.gsub(/\.(\d+)$/,“\1”) 这将处理所有非奖金积分情况: 1.9.3p392 :009 > "$29.99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</su

我有这个字符串:
$29.99
。我想删除小数点
,并在小数部分
99
周围加上
标记:
$2999

不过,格式可以改变;小数点可以是逗号而不是点:
,99

另外,考虑到货币标签可以是可变长度的(R$,$,Rs等),可以使用正则表达式提取货币标签。

str='$29.99'
结果=str.gsub(/\.(\d+)$/,“\1”)

这将处理所有非奖金积分情况:

1.9.3p392 :009 > "$29.99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "$29<sup>99</sup>"
1.9.3p392 :010 > "$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "$29<sup>99</sup>"
1.9.3p392 :011 > "R$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "R$29<sup>99</sup>"
1.9.3p392:009>“$29.99”。gsub(/(\d+)[,。](\d+/,“\\1\\2”)
=> "$2999"
1.9.3p392:010>“$29,99”.gsub(/(\d+)[,.](\d+/,“\\1\\2”)
=> "$2999"
1.9.3p392:011>“R$29,99”。gsub(/(\d+)[,.](\d+)/,“\\1\\2”)
=>“R$2999”

到目前为止,您尝试过什么正则表达式?尝试一下,很好。:)我正在尝试,但我不知道如何获取最后3个字符。
/(\$\124;\ 342\202\254)(\d+[\,](\d+)/
应该为您提供货币,例如$或€,前面的数字。或者,后面的数字。或您可以使用它们来构造一个新的字符串表示法。@alfa谢谢,不过这并不考虑货币标签的长度。只有当你尝试了
R$
-1而不是在Ruby中作为OP请求时,它才匹配
R
。@CharlesCaldwell错过了这一点,添加了Ruby版本。太棒了!将downvote替换为upvote。只需删除PHP部分。
1.9.3p385 :012 > "$29.99".gsub(/(\.|,)/,'<sup>').concat("</sup>")
 => "$29<sup>99</sup>" 
1.9.3p385 :020 > ("USD>as$29.99" =~ /(.*?)\d.*/ ; $1)
 => "USD>as$" 
1.9.3p392 :009 > "$29.99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "$29<sup>99</sup>"
1.9.3p392 :010 > "$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "$29<sup>99</sup>"
1.9.3p392 :011 > "R$29,99".gsub(/(\d+)[,.](\d+)/, "\\1<sup>\\2</sup>")
 => "R$29<sup>99</sup>"