【发布时间】:2019-05-31 15:02:15
【问题描述】:
我有大量文件,每个文件都包含一个带有可变数量参数的 bash 命令。我需要用相应的 API 调用替换这些。
文件中的示例 bash 命令(注意:“-p”参数的数量不同,有些没有):
./some_script.sh http://some.server.com -p a=value -p b=value -p c=value
对应的API调用示例
http://some.server.com/api/some/endpoint?a=value&b=value&c=value
我的问题是我似乎无法对每个参数进行分组,因为参数的数量是可变的。
基本正则表达式(这将匹配上面的示例,但仅分组第一个参数):
.\/some_script.sh\s([\w\/:\.]*)(\s-\w\s[\w=]*)
我试过了:
.\/some_script.sh\s([\w\/:\.]*)(\s-\w\s[\w=]*)*
但是,这似乎只对最后一个参数进行分组。 (用 regex101 测试)
理想情况下,我希望这个正则表达式能够在这些文件中对不定数量的参数进行分组,以便我可以轻松地将命令重新构建为 API 调用。
如果需要更详细的信息,请告诉我,欢迎提出任何建议。
【问题讨论】:
标签: regex pcre regex-lookarounds regex-group regex-greedy