1

この文字列の 1 つだけを取得しようとしています。

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:)\s\d*\s

数値と完全に一致します...数値を除外してメジャータイプと一致させようとしています。

これどうやってするの?

4

3 に答える 3

6

これはどうですか?

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"
于 2013-10-16T15:43:47.527 に答える