gpt4 book ai didi

python - 你能用一个正则表达式来解析函数参数吗?

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:32 24 4
gpt4 key购买 nike

问题

有一个程序文件,在文件中的某个位置包含以下代码片段。

...

food($apples$ , $oranges$ , $pears$ , $tomato$){
...
}

...

此函数可以包含任意数量的参数,但它们必须是以逗号分隔的字符串。所有参数字符串都是小写单词。

我希望能够使用正则表达式解析出每个参数。例如,python 中的结果列表如下:

["apples", "oranges", "pears", "tomato"]

尝试的解决方案

使用 python RE 模块,我能够通过将问题分成两部分来实现这一点。

  1. 在代码中找到函数并提取参数列表。

    plist = re.search(r'food\((.*)\)', programString).group(1)
  2. 使用另一个正则表达式拆分列表。

    params = re.findall(r'[a-z]+', plist)

问题

无论如何我可以用一个正则表达式而不是两个来实现这一点吗?

编辑

感谢 Tim Pietzcker 的回答,我找到了一些相关的问题:

  1. Python regular expressions - how to capture multiple groups from a wildcard expression?
  2. Which regex flavors support captures (as opposed to capturing groups)?

最佳答案

要回答您的问题“能否在单个正则表达式中完成?”:是的,但不能在 Python 中完成。

如果您想像示例中那样(单独)匹配和捕获未知数量的匹配项,仅使用一个正则表达式,那么您需要 a regex engine that supports captures (as opposed to capturing groups) .目前只有 .NET 和 Perl 6 可以做到这一点。

因此在 Python 中,您要么需要分两步完成(find 整个 food(...) 函数调用,然后是 findall 按照 Dingo 的建议使用第二个正则表达式进行个人匹配。

或者使用像 Paul McGuire 的 pyparsing 这样的解析器。

关于python - 你能用一个正则表达式来解析函数参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3885653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com