首页 > 解决方案 > 如何使用 Python 使用 Regex 编译括号中的数字列表

问题描述

我正在尝试使用 Regex 查找括号中的所有数字,例如,使用以下输入:

"PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"

我要这个:

[23, 45, 98, 34, 18]

我试过这个:

pattern = re.compile(r"\((\d+)\)")
final = list(pattern.findall("PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"))

它只返回空列表

标签: pythonregex

解决方案


您可以使用积极的前瞻模式:

re.findall(r'\d+(?=[^(]*\))', s)

所以给定s = "PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)",这返回:

['23', '45', '98', '34', '18']

或者,如果您希望列表项是整数,则可以将它们映射到int

list(map(int, re.findall(r'\d+(?=[^(]*\))', s)))

返回:

[23, 45, 98, 34, 18]

推荐阅读