关于解析方法签名的正则表达式问题
我正在尝试解析以下格式的方法签名:
'function_name(foo=<str>, bar=<array>)'
从中,我想要方法的名称、每个参数及其类型。显然我不想要 <
、>
字符等。参数的数量是可变的。
我的问题是:使用这个正则表达式时如何获取所有参数?我正在使用Python,但我只是在寻找一个总体思路。我是否需要命名组,如果需要,如何使用它们来捕获多个参数(每个参数都有其类型),全部在一个正则表达式中?
I'm trying to parse a method signature that is in this format:
'function_name(foo=<str>, bar=<array>)'
From this, I want the name of the method, and each argument and it's type. Obviously I don't want the <
, >
characters, etc. The number of parameters will be variable.
My question is: How is it possible to get all the parameters when using this regex? I'm using Python, but I'm just looking for a general idea. Do I need named groups and, if so, how can I use them to capture multiple parameters, each with it's type, all in one regex?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法使用 Python 正则表达式匹配可变数量的组(请参阅 这个)。相反,您可以使用正则表达式和
split()
的组合。这将匹配可变数量(包括 0)的参数。我选择不允许额外的空格,但如果您的格式不是很严格,您应该通过在标识符之间添加
\s+
来允许它。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()
.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.