是否有可能 select 一组中的所有替代方案
Is there a possibility to select all alternatives in a group
在我的正则表达式中有一组有 3 个备选方案。在正则表达式测试之后,只有最后出现的选项被 selected 到 select 组中。
是否有可能 select 所有发生的替代方案?
我用 regex101
来测试我的结果。
https://regex101.com/r/iBxX9V/4
如果这对您不起作用,这里有一个自动生成的代码来测试这个正则表达式:
const regex = /clone\s+([^ \/]+)\s+([^ \/]+)(?:\s*(?:--(flag1|flag2|flag3)))*$/gm;
const str = `clone
clone a b
clone a b --flag1
clone a b --flag1 --flag2
clone a b --flag1 --unknown
clone a b -- --
clone a b --flag1 --flag2 --flag3`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
目前,正则表达式匹配只会 return 最后一次出现的替代项。
clone a b --flag1 --flag2 --flag3
示例:
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
"flag3"
],
不知有没有办法得到
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
["flag1", "flag2", "flag3"]
],
或
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
"flag1",
"flag2",
"flag3"
],
注意:标志可以随机出现。
示例:https://regex101.com/r/iBxX9V/7
感谢任何帮助和提示。
你可以为每个旗帜做一个单独的组,然后你就会把它们都抓起来
clone\s+([^ \/]+)\s+([^ \/]+)(?:\s*(?:(--flag1)*\s*(--flag2)*\s*(--flag3)*))*$
在我的正则表达式中有一组有 3 个备选方案。在正则表达式测试之后,只有最后出现的选项被 selected 到 select 组中。 是否有可能 select 所有发生的替代方案?
我用 regex101
来测试我的结果。
https://regex101.com/r/iBxX9V/4
如果这对您不起作用,这里有一个自动生成的代码来测试这个正则表达式:
const regex = /clone\s+([^ \/]+)\s+([^ \/]+)(?:\s*(?:--(flag1|flag2|flag3)))*$/gm;
const str = `clone
clone a b
clone a b --flag1
clone a b --flag1 --flag2
clone a b --flag1 --unknown
clone a b -- --
clone a b --flag1 --flag2 --flag3`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}
目前,正则表达式匹配只会 return 最后一次出现的替代项。
clone a b --flag1 --flag2 --flag3
示例:
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
"flag3"
],
不知有没有办法得到
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
["flag1", "flag2", "flag3"]
],
或
"match":[
"clone a b --flag1 --flag2 --flag3",
"a",
"b",
"flag1",
"flag2",
"flag3"
],
注意:标志可以随机出现。
示例:https://regex101.com/r/iBxX9V/7
感谢任何帮助和提示。
你可以为每个旗帜做一个单独的组,然后你就会把它们都抓起来
clone\s+([^ \/]+)\s+([^ \/]+)(?:\s*(?:(--flag1)*\s*(--flag2)*\s*(--flag3)*))*$