首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Python中使用正则表达式编译括号中的数字列表

如何在Python中使用正则表达式编译括号中的数字列表
EN

Stack Overflow用户
提问于 2019-04-25 06:12:12
回答 5查看 179关注 0票数 0

我尝试使用正则表达式来查找括号中的所有数字,例如,输入如下:

代码语言:javascript
复制
"PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"

我想要的是:

代码语言:javascript
复制
[23, 45, 98, 34, 18]

我试过这个:

代码语言:javascript
复制
pattern = re.compile(r"\((\d+)\)")
final = list(pattern.findall("PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"))

并且它只返回空列表

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-04-25 06:33:51

您可以使用正向先行模式:

代码语言:javascript
复制
re.findall(r'\d+(?=[^(]*\))', s)

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

代码语言:javascript
复制
['23', '45', '98', '34', '18']

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

代码语言:javascript
复制
list(map(int, re.findall(r'\d+(?=[^(]*\))', s)))

它返回:

代码语言:javascript
复制
[23, 45, 98, 34, 18]
票数 3
EN

Stack Overflow用户

发布于 2019-04-25 06:16:37

我不知道正则表达式,但您可以不使用它:

代码语言:javascript
复制
string = "PO = 19 AND TR = 12 AND CD NOT IN (23, 45, 98, 34, 18)"
numbers = []

for s in string.split("(")[1].split(","):
    numbers.append(int(s.rstrip(")")))

print(numbers) # [23, 45, 98, 34, 18]
票数 1
EN

Stack Overflow用户

发布于 2019-04-25 06:30:09

您可以执行以下操作:

代码语言:javascript
复制
my_list = list(map(int, re.findall(r'\((.*?)\)', s)[0].split(',')))

收益率:

代码语言:javascript
复制
[23, 45, 98, 34, 18]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55839269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档