我想匹配字符串的不同部分并将它们存储在单独的变量中供以后使用。例如,
string = "bunch(oranges, bananas, apples)"
rxp = "[a-z]*\([var1]\, [var2]\, [var3]\)"
所以我有
var1 = "oranges"
var2 = "bananas"
var3 = "apples"
类似于 re.search() 所做的事情,但针对同一匹配项的多个不同部分。
编辑:事先不知道列表中的水果数量。应该把这个和问题放在一起。
最佳答案
这就是 re.search
所做的。只需使用捕获组(括号)访问稍后与某些子模式匹配的内容:
>>> import re
>>> m = re.search(r"[a-z]*\(([a-z]*), ([a-z]*), ([a-z]*)\)", string)
>>> m.group(0)
'bunch(oranges, bananas, apples)'
>>> m.group(1)
'oranges'
>>> m.group(2)
'bananas'
>>> m.group(3)
'apples'
另请注意,我使用原始字符串来避免双反斜杠。
如果您在 bunch
中的“变量”数量可以变化,那么您就有问题了。大多数正则表达式引擎无法捕获可变数量的字符串。但是在那种情况下你可以逃避这个:
>>> m = re.search(r"[a-z]*\(([a-z, ]*)\)", string)
>>> m.group(1)
'oranges, bananas, apples'
>>> m.group(1).split(', ')
['oranges', 'bananas', 'apples']
关于Python 重新 : Storing multiple matches in variables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13444675/