在Python中使用re.findall但不带括号

2024-10-03 04:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个变量x,存储以下值:

XYZ (APABC01)
ABC (ACACA18)
GHI (ABUAD21)

我只想要括号内的部分作为列表。 我使用了下面的正则表达式,并且几乎正确:

re.findall('\((.*?\))',x)

输出为:

['APABC01)', 'ACACA18)', 'ABUAD21)']

我的问题是如何消除其他括号。我希望输出如下:

['APABC01', 'ACACA18', 'ABUAD21']

这样我就可以访问列表中的元素以供进一步使用


Tags: re元素列表括号abcxyzghifindall
2条回答

您首先进行分组,因此它也捕获了括号。尝试:

re.findall(r'\((.*?)\)', x)

首先,它跳过括号,然后捕获介于括号和括号之间的所有内容

使用此正则表达式:

import re

x = '''XYZ (APABC01)
ABC (ACACA18)
GHI (ABUAD21)
'''
print(re.findall(r'[(](.*?)[)]', x))
# ['APABC01', 'ACACA18', 'ABUAD21']

[(]:仅由(开头部分组成的字符类。您也可以改用\(-转义的开头参数。
(.*?):任何字符重复0次或以上,非贪婪(最小出现次数)。模式被re.findall捕获并作为列表返回

相关问题 更多 >