我有上千种产品的原料,例如:
Ingredient = 'Beef stock (beef bones, water, onion, carrot, beef meat, parsnip, thyme, parsley, clove, black pepper, bay leaf), low lactose cream (28%), onion, mustard, modified maize starch,tomato puree, modified potato starch, butter sugar, salt (0,8%), burnt sugar, blackcurrant, peppercorns (black, pink, green, all spice, white) 0,4%.'
我希望这种成分的形式如下:
listOfIngredients = ['Beef Stock', 'low lactose cream', 'onion', 'mustard', 'modified maize starch','tomato puree', 'modified potato starch', 'butter sugar', 'salt', 'burnt sugar', 'blackcurrant', 'peppercorns']
因此,在配料表中,我没有任何关于产品百分比的解释,甚至没有一种配料本身含有的其他产品。正则表达式是一个很好的方法,但我不擅长使正则表达式。有人能帮我制作正则表达式以获得所需的输出吗。提前谢谢。你知道吗
你可以尝试两种方法。你知道吗
第一种方法是删除所有
(...)
子字符串和任何不在,
之后的子字符串(后面没有非单词边界)。你知道吗参见regex demo
详细信息:
\s*
-0+空格\([^()]*\)
-内部没有(
和)
的(...)
子串:\(
-文字(
[^()]*
-0+字符,而不是(
和)
(a[^...]
是一个否定字符类)[^,]*
-0+除,
以外的字符(?:,\b[^,]*)*
-零个或多个序列:,\b
-后跟字母/数字/下划线的逗号[^,]*
-0+个字符,而不是,
。你知道吗删除这些匹配项,然后使用
,\s*
regex用逗号和0+空格分割字符串以获得最终结果。你知道吗第二种是基于匹配和捕获仅由字母(和
_
)组成的单词,并且只匹配(...)
子字符串。你知道吗参见second regex demo
详细信息:
\([^()]*\)
-一个(...)
子串,内部没有(
和)
|
-或([^\W\d]+(?:\s+[^\W\d]+)*)
-第1组:[^\W\d]+
-1+字母或下划线(您可以在\d
之后添加_
以排除下划线)(?:\s+[^\W\d]+)*
-0+序列:\s+
-1个或多个空格[^\W\d]+
-1+字母或下划线对于当前字符串,两者都返回相同的结果,但以后可能需要对其进行调整。你知道吗
见Python demo:
相关问题 更多 >
编程相关推荐