Python正则表达式:将“kg”和“g”或“ML”和“L”分开

2024-06-28 11:05:22 发布

您现在位置:Python中文网/ 问答频道 /正文

任务是将产品的属性与其字符串分开。我正在使用正则表达式来分隔所需的部分,但很难区分“L”和“ML”(或“L”和“ML”)。“kg”和“g”的情况类似,因为正则表达式总是选择较短的字符串

prod = 'TestProduct- 200 ML x24'
searchobj =  re.findall('([0-9]+).*(g|kg|ltr|l|ml)\s*x*[*]*([0-9]+)', prod, re.I)
print(searchobj)

#output
[('200', 'L', '24')]

如何使输出如下

[('200', 'ML', '24')]

谢谢


Tags: 字符串re属性产品情况prodml区分
2条回答

你可以用

(\d+(?:\.\d+)?)\s*(g|kg|ltr|l|ml)\s*x*\**(\d+(?:\.\d+)?)

regex demo

详细信息

  • (\d+(?:\.\d+)?)-组1:一个或多个数字,然后是一个点的可选序列,然后是一个或多个数字
  • \s*-0+空格
  • (g|kg|ltr|l|ml)-第2组:字符(序列)之一
  • \s*-0+空格
  • x*-0个或更多x个字符
  • \**-0个或更多*个字符
  • (\d+(?:\.\d+)?)-第3组:一个或多个数字,然后是一个点的可选序列,然后是一个或多个数字

您可以通过将形式(g|kg|ltr|l|ml)\s更改为\s(g|kg|ltr|l|ml)\s(表达式前后需要一个空格)来指定只需要形式为(g|kg|ltr|l|ml)\s的整个单词

相关问题 更多 >