You can't match a variable number of groups with Python regular expressions (see this). Instead you can use a combination of regex and split()
.
>>> name, args = re.match(r'(w+)((.*))', 'function_name(foo=<str>, bar=<array>, baz=<int>)').groups()
>>> args = [re.match(r'(w+)=<(w+)>', arg).groups() for arg in args.split(', ')]
>>> name, args
('function_name', [('foo', 'str'), ('bar', 'array'), ('baz', 'int')])
This will match a variable number (including 0) arguments. I have chosen not to allow additional whitespace, although you should allow for it by adding s+
between identifiers if your format isn't very strict.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…