使用 re.findall 但在 Python 中没有括号

Using re.findall but without parenthesis in Python

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

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

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

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

输出为:

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

我的问题是如何去掉另一个括号。我想要这样的输出:

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

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

使用这个正则表达式:

import re

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

[(] :字符 class 仅包含 ( - 左括号。您也可以使用 \( - 转义左括号。
(.*?) :任何字符重复 0 次或多次,非贪婪(最少出现次数)。 re.findall.

捕获模式并将其作为列表返回

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

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

首先,它转义括号,然后捕获中间的所有内容。