如何查找文本但将其从匹配正则表达式中排除?

How to look for text but exclude it from match regular expressions?

我有一个字符串 key word word,我想匹配第一个 word,因为它位于 key 之后。

我正在尝试这个正则表达式 /(?:key\s)word/g 并认为非捕获组不会出现在比赛中。但是正则表达式匹配 key word(使用 string.match()),这不是预期的结果。

如何在 JavaScript 中编写正则表达式 ,它在 word 后面查找 key 但从中排除 key比赛?

(附加问题:非捕获组 (?:) 和捕获组 () 之间的确切区别是什么?)

使用 exec 函数,其中 returns 一个数组,其中第一个元素表示整个匹配项,其中第二个元素指向第一个捕获组捕获的字符。

> var s = 'key word word'
> /\bkey\s+(\w+)/.exec(s)
[ 'key word', 'word', index: 0, input: 'key word word' ]
> /\bkey\s+(\w+)/.exec(s)[1]
'word'
> /\bkey\s+(word)/.exec(s)[1]
'word'