2010-10-24 256 views
2

我需要一個正則表達式,給定一個配料行,會告訴我該配料的數量。下面是一些示例值:幫助正則表達式

  • 8盎司半甜巧克力
  • 6雞蛋
  • 3/4杯糖
  • 1湯匙濃咖啡粉末
  • 1/2杯荷蘭加工烘烤可可
  • 1/4杯不加糖可可
  • 1/2杯糖果糖
  • 2杯濃奶油
  • 2至4乾燥扇貝(可選)
  • 1 1/2杯胡蘿蔔
  • 覆盆子和杏保留

每當量存在(全部除了最後的實施例),它需要得到數量。因此,對於第一個例子「8盎司半甜巧克力」,它需要返回「8盎司」。

如何使用PHP正則表達式執行此操作?

+1

所以你會保持一個可能的數量單位清單,是否正確?你需要什麼樣的語言/正則表達風格?如果你問我,使用正常的編程/腳本語言,遍歷每種成分,分解它,並將第一個和第二個成員與已知單元列表進行比較會更容易。這不是真的正則表達式領域 – 2010-10-24 12:21:16

+0

表達式應該如何處理「**糖的3/4杯**」? – 2010-10-24 12:22:20

+0

是的,我將列出可能的單位。我正在使用PHP。 '的'應該被刪除。謝謝。 – moteutsch 2010-10-24 12:36:12

回答

2

對於你的例子(和其他幾個人,我能想到的),

^[ \d/.-]*(?:to\s+[ \d/.-]*)?(?:ounces?|cups?|(?:table|tea)spoons?)? 

會工作。

如果你想避免捕獲尾隨空格(因爲這個正則表達式會在一個數字之後沒有跟着一個單位),那麼把(?=\s)加到正則表達式的末尾。

+0

這會錯過6個蛋嗎? – polyhedron 2010-10-24 12:49:40

+2

@多面體:不,爲什麼要這樣?這些單位是可選的。 – 2010-10-24 12:59:30