擅长:python、mysql、java
<p>一般来说,正则表达式不擅长匹配嵌套/递归结构。因此,虽然<em>可能</em>会成功,但用手进行拆分会容易得多</p>
<pre class="lang-py prettyprint-override"><code>groups = []
nesting = 0
idx = 0
for group in re.finditer(r'[,\(\)]', string):
assert nesting >= 0
if group[0] == '(':
nesting += 1
elif group[0] == ')':
nesting -= 1
elif nesting > 0:
continue # ignore commas in parens
else:
groups.append(string[idx:group.start()].strip())
idx = group.end()
# after last group
groups.append(string[idx:].strip())
</code></pre>