gpt4 book ai didi

ruby 正则表达式字符串 $

转载 作者:数据小太阳 更新时间:2023-10-29 09:02:04 25 4
gpt4 key购买 nike

我必须从这样的字符串中降低价格:

s1 = "somefing $ 100"
s2 = "$ 19081 words $"
s3 = "30$"
s4 = "hi $90"
s5 = "wow 150"

输出应该是:

s1 = "100"
s2 = "19081"
s3 = "30"
s4 = "90"
s5 = nil

我使用以下正则表达式:

price = str[/\$\s*(\d+)|(\d+)\s*\$/, 1]

但它不适用于所有类型的字符串。

最佳答案

您的代码总是返回第一个捕获组的结果,而在失败的情况下,它是您感兴趣的第二个捕获组。我认为 [] 方法没有处理这个问题的好方法(当使用编号的捕获组时)。你可以这样写

price = str =~ /\$\s*(\d+)|(\d+)\s*\$/ && ($1 || $2)

虽然这不是很清晰。相反,如果您使用命名的捕获组,那么您可以这样做

price = str[/\$\s*(?<amount>\d+)|(?<amount>\d+)\s*\$/, 'amount']

重复命名的捕获组不会总是做你想做的事,但当它们在单独的交替分支中时(就像它们在这里)那么它应该工作。

关于 ruby 正则表达式字符串 $,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33199487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com