Regex JS-组默认值/如果找不到值则创建一个空组
Regex JS- group default value / create an empty group if value not found
我有以下字符串:
"Group: I_am_group |SubGroup: I_am_subgroup"
以及以下正则表达式:
Group:\s(?<group>\w+) \|SubGroup:\s(?<subGroup>\w*)
结果是:
result
到此为止-对我来说很完美,但是当我遇到以下情况时:
对于以下字符串:
1. "Group: I_am_group |SubGroup:"
2. "Group: I_am_group |"
3. "Group: I_am_group"
我想得到结果(例如对于字符串“Group: I_am_group”):
Match1 Group: I_am_group
group I_am_group
subGroup null
是否可以使用正则表达式在找不到时创建一个空组?或者如果找不到值,则为组提供默认值?
在这种情况下,我想在结果上创建名为- 'subGroup' 的组,值为- null。
每个规范的不匹配组的值为 undefined
,而不是 null
。命名组不匹配,例如,当它出现在另一个不匹配的可选组中时。
现在将您的三个示例字符串作为空组,并将它们与原始字符串进行比较 "Group: I_am_group |SubGroup: I_am_subgroup"
。
- 在字符串 (1.) 中,缺少
" I_am_subgroup"
。那就是正则表达式中的\s(?<subGroup>\w*)
。
- 在字符串 (2.) 中,缺少
"SubGroup: I_am_subgroup"
。即正则表达式中的SubGroup:\s(?<subGroup>\w*)
。
- 在字符串 (3.) 中,缺少
" |SubGroup: I_am_subgroup"
。那就是正则表达式中的 \|SubGroup:\s(?<subGroup>\w*)
。
通过将所有这三个部分包含在一个可选组中,我们得到
/Group:\s(?<group>\w+)( \|(SubGroup:(\s(?<subGroup>\w*))?)?)?/
这是一个正则表达式,在所有情况下都匹配 subGroup
的空匹配项。请注意,尽管 \w*
可以替换为 \w+
,除非在所有其他部分都存在的情况下您希望 subGroup
为空字符串(而不是 undefined
)。
const regExp = /Group:\s(?<group>\w+)( \|(SubGroup:(\s(?<subGroup>\w+))?)?)?/;
const str1 = "Group: I_am_group |SubGroup:";
const str2 = "Group: I_am_group |";
const str3 = "Group: I_am_group";
console.log(str1.match(regExp).groups);
console.log(str2.match(regExp).groups);
console.log(str3.match(regExp).groups);
我有以下字符串:
"Group: I_am_group |SubGroup: I_am_subgroup"
以及以下正则表达式:
Group:\s(?<group>\w+) \|SubGroup:\s(?<subGroup>\w*)
结果是:
result
到此为止-对我来说很完美,但是当我遇到以下情况时:
对于以下字符串:
1. "Group: I_am_group |SubGroup:"
2. "Group: I_am_group |"
3. "Group: I_am_group"
我想得到结果(例如对于字符串“Group: I_am_group”):
Match1 Group: I_am_group
group I_am_group
subGroup null
是否可以使用正则表达式在找不到时创建一个空组?或者如果找不到值,则为组提供默认值?
在这种情况下,我想在结果上创建名为- 'subGroup' 的组,值为- null。
每个规范的不匹配组的值为 undefined
,而不是 null
。命名组不匹配,例如,当它出现在另一个不匹配的可选组中时。
现在将您的三个示例字符串作为空组,并将它们与原始字符串进行比较 "Group: I_am_group |SubGroup: I_am_subgroup"
。
- 在字符串 (1.) 中,缺少
" I_am_subgroup"
。那就是正则表达式中的\s(?<subGroup>\w*)
。 - 在字符串 (2.) 中,缺少
"SubGroup: I_am_subgroup"
。即正则表达式中的SubGroup:\s(?<subGroup>\w*)
。 - 在字符串 (3.) 中,缺少
" |SubGroup: I_am_subgroup"
。那就是正则表达式中的\|SubGroup:\s(?<subGroup>\w*)
。
通过将所有这三个部分包含在一个可选组中,我们得到
/Group:\s(?<group>\w+)( \|(SubGroup:(\s(?<subGroup>\w*))?)?)?/
这是一个正则表达式,在所有情况下都匹配 subGroup
的空匹配项。请注意,尽管 \w*
可以替换为 \w+
,除非在所有其他部分都存在的情况下您希望 subGroup
为空字符串(而不是 undefined
)。
const regExp = /Group:\s(?<group>\w+)( \|(SubGroup:(\s(?<subGroup>\w+))?)?)?/;
const str1 = "Group: I_am_group |SubGroup:";
const str2 = "Group: I_am_group |";
const str3 = "Group: I_am_group";
console.log(str1.match(regExp).groups);
console.log(str2.match(regExp).groups);
console.log(str3.match(regExp).groups);