首页 > 解决方案 > 正则表达式检索用逗号分隔的括号内的字符串部分

问题描述

我有一个字符串,我想从中获取括号内的值。然后,获取用逗号分隔的值。

示例:x(142,1,23ERWA31)

我想得到:

是否有可能使用一个正则表达式获得所有内容?

我找到了这样做的方法,但它很难看。

这就是我在 python 中的做法:

import re
string = "x(142,1,23ERWA31)"
firstResult = re.search("\((.*?)\)", string)
secondResult = re.search("(?<=\()(.*?)(?=\))", firstResult.group(0))
finalResult = [x.strip() for x in secondResult.group(0).split(',')]
for i in finalResult:
    print(i)

142

1

23ERWA31

标签: pythonregex

解决方案


这适用于您的示例字符串:

import re

string = "x(142,1,23ERWA31)"
l = re.findall (r'([^(,)]+)(?!.*\()', string)

print (l)

结果:一个简单的列表

['142', '1', '23ERWA31']

表达式匹配不在 、 和 中的字符序列(——,为了)防止第一个x被拾取——后面可能不会在字符串中的(任何位置。x如果您的序言包含多个字符,这也可以工作。

findall而不是search确保找到所有项目,并且作为奖励,它返回一个简单的结果列表。


推荐阅读