python - 正则表达式检索用逗号分隔的括号内的字符串部分
问题描述
我有一个字符串,我想从中获取括号内的值。然后,获取用逗号分隔的值。
示例:x(142,1,23ERWA31)
我想得到:
- 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
解决方案
这适用于您的示例字符串:
import re
string = "x(142,1,23ERWA31)"
l = re.findall (r'([^(,)]+)(?!.*\()', string)
print (l)
结果:一个简单的列表
['142', '1', '23ERWA31']
表达式匹配不在 、 和 中的字符序列(
——,
为了)
防止第一个x
被拾取——后面可能不会跟在字符串中的(
任何位置。x
如果您的序言包含多个字符,这也可以工作。
findall
而不是search
确保找到所有项目,并且作为奖励,它返回一个简单的结果列表。
推荐阅读
- c# - Tensorflow 2 中的外部推理上下文(shape_refiner.cc)是什么?
- c - C 系统调用失败
- android - 在revylerview中调用notifyDataSetChanges方法后如何保持recyclerview的位置?
- xml - 从 XSD 生成的 XML:值对于模式不是方面有效的
- c - 有没有一种方法可以在 C 中对标头和库依赖项进行版本控制?
- angular - 刷新页面时,Angular 组件不会重新呈现订阅的数据
- php - Symfony 项目的自定义配置文件
- javascript - 如何从javascript中的数组中获取多个随机不同的项目?
- javascript - 在 NodeJS Express 项目中无法获取 /
- ada - 重构:删除重命名的包(自动)