我需要使用正则表达式从配方数据库中的表单字段中识别一个分数。成分将在两部分表单字段中输入。字段一是数量,字段二是成分。然后,我需要将字段 1 分解为其小数部分以输入到数据库中。
可能的条目包括:1, 1/2, 1 1/2,以及之前的任何带有单词的条目,例如 1 杯或 1/2 汤匙。我预见的最难的是:[2 28 盎司。罐头] 其中 2 是数字,28 盎司。罐头就是这个词。
我发现: (\b[0-9]{1,3}(?:,?[0-9]{3})*(?:.[0-9]{2})?\b) 哪个某种作品。我对 Regex 完全陌生,所以我只进行猜测和检查,我很难让它为我工作。
问题 #1:我还需要识别单词部分。单词部分也可以是多个单词,例如 2 个大罐子,其中大罐子就是单词部分。上面的正则表达式很好地识别了数字,但我想不出一种方法来获取表单字段的其余部分。例如 1 1/2 汤匙给我 1,1,2 但仅此而已,我也需要汤匙。我尝试使用这个正则表达式并使用 len 来减少原始值,减去前面的分数,但是由于 1 / 2 和 1/2 都允许,所以无法确定要减去多少点(1 / 2应该从字符串的前面减去 6,1/2 应该从字符串的前面减去 4,只看 1,2 的正则表达式结果,我不知道要减去多少)。
问题#2:这不是那么重要,但是关于如何识别 [2 28 oz cans] 问题的任何想法?上面的正则表达式拉出 2,28 是不正确的,它应该只拉出 2 个,然后其余的(28 盎司罐头)将是问题 1 的解决方案有望找到的另一部分。