Ruby on rails 正则表达式挑战

Ruby on rails 正则表达式挑战,ruby-on-rails,ruby,regex,ruby-on-rails-3,Ruby On Rails,Ruby,Regex,Ruby On Rails 3,我只想抓住这根绳子的一根: Serving Size: 1 cup, halves, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g 还有很多人喜欢它。尽管每个字符串都有不同的变量。例如,上面的字符串可能如下所示: Serving Size: 100 oz, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g (?<=Serving Size:\s\d*\s) 等等 所以,

我只想抓住这根绳子的一根:

Serving Size: 1 cup, halves, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g
还有很多人喜欢它。尽管每个字符串都有不同的变量。例如,上面的字符串可能如下所示:

Serving Size: 100 oz, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g
(?<=Serving Size:\s\d*\s)
等等

所以,我现在只想得到绳子的“oz”或“cup”部分

我尝试过的正则表达式如下所示:

Serving Size: 100 oz, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g
(?<=Serving Size:\s\d*\s)
(?这个怎么样

s = "Serving Size: 1 cup, halves, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g"

regex = /Serving Size:\s*(?<amount>\d+)\s*(?<units>\w+)/

m = s.match(regex) # => #<MatchData "Serving Size: 1 cup" amount:"1" units:"cup">
m['units'] # => "cup"
m['amount'] # => "1"
s=“份量:1杯,一半,卡路里:48.6,脂肪:0.5克,碳水化合物:11.7克,蛋白质:1克”
正则表达式=/服务大小:\s*(?\d+)\s*(?\w+)/
m=s.match(正则表达式)#=>#
m['units']#=>“杯”
m['amount']#=>“1”
这个怎么样

s = "Serving Size: 1 cup, halves, Calories: 48.6, Fat: 0.5g, Carbs: 11.7g, Protein: 1g"

regex = /Serving Size:\s*(?<amount>\d+)\s*(?<units>\w+)/

m = s.match(regex) # => #<MatchData "Serving Size: 1 cup" amount:"1" units:"cup">
m['units'] # => "cup"
m['amount'] # => "1"
s=“份量:1杯,一半,卡路里:48.6,脂肪:0.5克,碳水化合物:11.7克,蛋白质:1克”
正则表达式=/服务大小:\s*(?\d+)\s*(?\w+)/
m=s.match(正则表达式)#=>#
m['units']#=>“杯”
m['amount']#=>“1”
注意:这回答了正则表达式不起作用的原因。Sergio Tulentsev的答案已经为如何获得所需结果提供了一个很好的解决方案

如果我正确地解释了您的意图,
(?注意:这回答了正则表达式不工作的原因。Sergio Tulentsev的回答已经为如何获得所需结果提供了一个很好的解决方案

如果我正确解释了您的意图,
(?
使用捕获组,然后使用
$1
$2
$3
等访问它们


使用捕获组,然后使用
$1
$2
$3
等访问它们。

其中包括数字。我正在尝试隔离度量值类型。度量值类型是什么?“服务大小”?它是字符串的“oz”或“cup”部分。我希望能够隔离这一部分并将其粘贴到一个名为“测量类型”。份量应该是具体的数字,但我已经能够分离出那一位。@ninja08:所以
m['units']
对你来说不够好,是吗?你需要完成这项工作还是喜欢它?:)@Yoshiji先生:这叫“命名捕获”“如果你想了解更多。这包括数字。我正在尝试分离度量值类型。度量值类型是什么?”服务大小?它是字符串的“oz”或“cup”部分。我希望能够分离出这一部分,并将其粘贴到一个名为“measure\u type”的变量中”。具体的份量应该是数字,但我已经能够分离出那一部分。@ninja08:所以
m['units']
对你来说不够好,是吗?你需要完成这项工作还是喜欢它?:)@Yoshiji先生:这叫“命名捕获”如果您想了解更多信息。不允许使用可变长度查找?最好在
,?[]*(\w[\w]*(\w[\w]*)(?不允许使用可变长度查找?最好在
,?[]*(\w[\w]*)上进行拆分?