如何查找文本但将其从匹配正则表达式中排除?
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'
我有一个字符串 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'