# 课程 A3:非捕获组

课程 11:捕获组课程 A1:反向引用中,我们已经学习到:一对括号内的任何子模式都将被捕获为一个组,每个组按照从左到右的左括号出现的顺序,编号从 1 开始递增。

但是某些情况下,我们并不需要使用捕获组的内容,这个时候可以使用非捕获组 (non-capturing groups)。非捕获组的语法是在捕获组的基础上,在左括号的右侧加上 ?:,即 (?:exp)。使用非捕获组可以节省内存、提升效率。

在下面这段 JavaScript 代码中,我们使用了非捕获组,反向引用 $1 / $2 并没有与之对应的捕获组,在这里相当于纯字符串

"123-456".replace(
  /(?:\d+)-(?:\d+)/, // searchValue
  "$2-$1" // replaceValue, $1、$2 等价于反向引用 \1、\2
) 
// Output => "$2-$1"

请完成下面的练习,要求使用条件语法匹配前两行的动物,但不能生成捕获组。

练习 A3:非捕获组
Task Text Capture Groups Result
match I love cats cats
match I love dogs dogs
skip I love logs
skip I love cogs
解决上述任务以继续下一个问题,或者查看答案