Php 正则表达式的帮助

Php 正则表达式的帮助,php,regex,Php,Regex,我需要一个正则表达式,给定一个成分行,它将告诉我该成分的数量。以下是一些示例值: 8盎司半甜巧克力 6个鸡蛋 3/4杯糖 1汤匙浓咖啡粉 1/2杯荷兰加工烘焙可可 1/4杯无糖可可 1/2杯糖果糖 2杯浓奶油 2至4个干贝(可选) 1半杯胡萝卜 覆盆子和杏子蜜饯 只要存在一个数量(除最后一个之外的所有示例),它就需要获取该数量。因此,对于第一个例子“8盎司半甜巧克力”,它需要返回“8盎司” 如何使用PHP正则表达式实现这一点?对于您的示例(以及我能想到的其他一些示例) 会有用的 如果要避免捕

我需要一个正则表达式,给定一个成分行,它将告诉我该成分的数量。以下是一些示例值:

  • 8盎司半甜巧克力
  • 6个鸡蛋
  • 3/4杯糖
  • 1汤匙浓咖啡粉
  • 1/2杯荷兰加工烘焙可可
  • 1/4杯无糖可可
  • 1/2杯糖果糖
  • 2杯浓奶油
  • 2至4个干贝(可选)
  • 1半杯胡萝卜
  • 覆盆子和杏子蜜饯
只要存在一个数量(除最后一个之外的所有示例),它就需要获取该数量。因此,对于第一个例子“8盎司半甜巧克力”,它需要返回“8盎司”

如何使用PHP正则表达式实现这一点?

对于您的示例(以及我能想到的其他一些示例)

会有用的


如果要避免捕获尾随空格(就像此正则表达式在数字后面不跟单位一样),请将
(?=\s)
添加到正则表达式的末尾。

这样您就可以在某处维护可能的数量单位列表,对吗?你需要什么语言/正则表达式的味道?如果你问我,使用一种普通的编程/脚本语言,遍历每个成分,将其拆分,并将第一个和第二个成员与已知单元列表进行比较,这将更容易做到。这不是真正的正则表达式区域表达式应该如何处理“3/4杯糖”?是的,我将有一个可能的单元列表。我正在使用PHP应该删除“的”。谢谢。哦,我的意思是“当然”应该被忽略。这将是一个非常棘手的问题。匹配示例中的所有组合相对简单,但是获得一个能够匹配自然语言配方中所有可能组合的正则表达式几乎是不可能的。这会错过鸡蛋上的6个吗?
^[ \d/.-]*(?:to\s+[ \d/.-]*)?(?:ounces?|cups?|(?:table|tea)spoons?)?