检索字符串Regex模式匹配



我有一个列表input:

['ICE ERIE', 'ERIE', 'o9 ManGo', 'ManGo SLACKCURRAN 120mL', 'SLACKCURRAN']

如何从中提取以下字符串:

'ManGo SLACKCURRAN 120mL'

另一个例子:

Input:

['SWANSON', 'Apple Cider Vinegar Food Supplement Supplement mg per tablet DOUBLE STRENGTH FORMULA per tablet 1 NET', 'Cider', 'Vinegar', 'Food Supplement DOUBLE', 'Supplement', '200', 'per', 'tablet', 'DOUBLE', 'TABLETS 1 NET WEIGHT: 62g', '1', 'NET', 'WEIGHT:']

Output:

'TABLETS 1 NET WEIGHT: 62g' 

我的尝试:

import re
l = []
for each in input:   
elif re.match('^\d+\.?\d*(ounce|fl oz|foot|sq ft|pound|gram|inch|sq in|mL)$',each.lower()):
l.append(each)
else:
pass 

您可以使用

import re
input_l = ['ICE ERIE', 'ERIE', 'o9 ManGo', 'ManGo SLACKCURRAN 120mL', 'SLACKCURRAN']
reg = re.compile(r'd*.?d+s*(?:ounce|fl oz|foot|sq ft|pound|gram|inch|sq in|ml)b', re.I)
print( list(filter(reg.search, input_l)) )
# => ['ManGo SLACKCURRAN 120mL']

请参阅Python演示。

备注

  • 使用re.search在字符串内的任何位置搜索匹配项(re.match仅在字符串开始处搜索(,请参阅以下线程
  • 移除^(管柱起点(和$(管柱终点(锚
  • 使用re.I标志进行不区分大小写的匹配
  • d*.?d+是一种更方便的匹配整数或浮点数的模式,因为它还支持类似.95的数字
  • 以单词边界结束模式,以匹配作为完整单词的测量单位(注意字符串文字之前的r前缀(

最新更新