Why pyparsing, not ply or regex?
Ply tries to implement lex/yacc only, so it's far from a nice interface really...
Or specifically: it's trivial to match `specific_func(any_expression, {capture, these, values})`, but it's practically impossible with regex and painful to post-process with ply.
Some people, when confronted with a problem, think “I know, I'll use regular expressions.” Now they have two problems.