我正在解析一个食谱的配料文本,有时会有“1罐(21盎司)豆子”这样的东西。
首先,我在一行中寻找数字,然后-查看每个确切的数字,找出它的度量。
一切都很好,直到数字结尾相似-例如,这里是1罐21盎司,我之前的lookaround
(?<=1)[ ]*[a-zA-Z]*
查找“1”的两个单词:“can”和“oz”。
但我需要找到纯'1‘后面的每个单词,而不是'21’。对于这种情况,它只能找到'can‘(没有'oz'),我尝试删除前面有数字的所有内容:
(?<=[^\d]1)[ ]*[a-zA-Z]*
如果1can不在行的开头,它就可以正常工作……例如,在这两行中:
1罐(21盎司)#不匹配任何东西
21盎司(1罐)#匹配的‘罐’
如果我在第一行(在‘1can’之前)添加一个空格,它也可以正常工作……所以一开始就有些奇怪的事情。
诀窍是什么?
发布于 2019-08-03 13:05:31
我不知道它是不是100%正确,但它适用于'1‘之后的每个单词。
(?<!\d)1[ ]*([a-zA-Z]+)
https://stackoverflow.com/questions/57335418
复制相似问题