Python 重新 : Storing multiple matches in variables

标签 python regex

我想匹配字符串的不同部分并将它们存储在单独的变量中供以后使用。例如,

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/

相关文章:

javascript - ionic 2 : Form validator (regex)

javascript - 只允许小写字符

php - 正则表达式:如果字母与数字相邻则添加空格

c# - 如何为给定示例制定正则表达式

python - 错误的指数幂图 - 如何改进曲线拟合

Python继承: init is having an issue with the number of params

python - 在 Python Pandas Dataframe 中动态添加列的数据处理

python - 使用 pandas 数据框进行主成分分析

Python 数字序列

javascript - 如何用lodash替换数组中的十进制数