使用 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)
首先,它转义括号,然后捕获中间的所有内容。
我在 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)
首先,它转义括号,然后捕获中间的所有内容。