在一行中检测捕获组合和置换是否可能?

时间:2021-08-12 04:29:01

标签: c# regex combinations permutation regex-lookarounds

我正在尝试从进程表中检测一个程序,并需要解析其捕获的组参数。我想用单个正则表达式完成此操作,但是如果一些参数被混乱和 / 或省略了,我不知道这是否可能。

例如,我有:

程序.exe -a arg_a -b arg_b -c arg_c -d arg_d -e arg_e

但它也可以是:

程序.exe -c arg_c -a arg_a -b arg_b -e arg_e
程序.exe -b arg_b
程序.exe -a arg_a -c arg_c -d arg_d

现在,我需要获取每个参数。我知道我可以像下面这样简单地拥有 5 组正则表达式,

"程序.exe(?:.*-a (?<arga>\\w+)|)"
"程序.exe(?:.*-b (?<argb>\\w+)|)"
"程序.exe(?:.*-c (?<argc>\\w+)|)"
"程序.exe(?:.*-d (?<argd>\\w+)|)"
"程序.exe(?:.*-e (?<arge>\\w+)|)"

但这将需要 5 次迭代,我真的很希望在单个运行中完成此操作。

是否可能?如果可以,请提供任何有关此问题的见解。

0 个答案:

没有答案