提取括号的Python正则表达式

2024-04-26 23:02:52 发布

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

我有以下笨拙的代码从字符串“ABC(XYZ)”中提取“ABC”和“(XYZ)”

import re

test_str = 'ABC(XYZ)'
partone = re.sub(r'\([^)]*\)', '', test_str)
parttwo_temp = re.match('.*\((.+)\)', test_str)
parttwo = '(' + parttwo_temp.group(1) + ')'

我想知道是否有人能想出一个更好的正则表达式来拆分字符串。谢谢。你知道吗


Tags: 字符串代码testimportrematchgrouptemp
3条回答

对于这类输入数据,我们可以用空格+(替换(并按空格拆分:

>>> s = 'ABC(XYZ)'
>>> s.replace("(", " (").split()
['ABC', '(XYZ)']

这样我们就在每个左括号前人工创建了一个分隔符。你知道吗

[i for i in re.split(r'(.*?)(\(.*?\))', test_str) if i]

你可以用re.findall

>>> import re
>>> test_str = 'ABC(XYZ)'
>>> re.findall(r'\([^()]*\)|[^()]+', test_str)
['ABC', '(XYZ)']
>>> [i for i in re.findall(r'(.*)(\([^()]*\))', test_str)[0]]
['ABC', '(XYZ)']

相关问题 更多 >