对于正则表达式,您可以使用match()
函数做你想做的事,并使用组来得到你的结果。另外,不要分配给单词string
,因为这是一个内置函数(即使它已被弃用)。对于您的示例,如果您知道每次都有相同数量的水果,则看起来像这样:
import re
input = "bunch(oranges, bananas, apples)"
var1, var2, var3 = re.match('bunch\((\w+), (\w+), (\w+)\)', input).group(1, 2, 3)
在这里,我使用了\w
特殊序列,与任何字母数字字符或下划线匹配,如中所述文档
如果您事先不知道水果的数量,可以使用两个正则表达式调用,一个是提取列出水果的字符串的最小部分,去掉“bunch”和括号,然后finditer
提取水果的名称:
import re
input = "bunch(oranges, bananas, apples)"
[m.group(0) for m in re.finditer('\w+(, )?', re.match('bunch\(([^)]*)\)', input).group(1))]