Python正则表达式提取括号

时间:2015-12-30 05:22:54

标签: python regex

我有以下笨重的代码从字符串'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) + ')'

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

3 个答案:

答案 0 :(得分:1)

您可以使用>>> 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)']

var line = d3.svg.line()
        .interpolate("basis")
        .x(function(d) {console.log(x(d.year));return x(d.year)}) // x will be year
        .y(function(d) {console.log(y(d.total));return y(d.total)}); //y will be total

答案 1 :(得分:0)

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

答案 2 :(得分:0)

对于此类输入数据,我们可以将(替换为空格+ (并按空格分割:

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

这样我们就可以在每个左括号之前人工创建分隔符。