可以说,有多个正则表达式
.+
(?:BBB )?CCC
以单个表达式组合为组 - /^(first) (second)$/
两个小组都不应该知道"关于彼此(意思是 - 我无法改变他们的表达方式)。
/^(.+) ((?:BBB )?CCC)$/.exec('AAA BBB CCC');
目前的结果:
["AAA BBB CCC", "AAA BBB", "CCC"]
预期结果:
["AAA BBB CCC", "AAA", "BBB CCC"]
如何确定组的优先级,以便BBB
最终成为第二个组?
答案 0 :(得分:1)
通过在.+
<旁边添加不情愿的量词?
,将第一个+
(在捕获组中)设为non-greedy / p>
^(.+?) ((?:BBB )?CCC)$
> /^(.+?) ((?:BBB )?CCC)$/.exec('AAA BBB CCC');
[ 'AAA BBB CCC',
'AAA',
'BBB CCC',
index: 0,
input: 'AAA BBB CCC' ]