我试图在 git 存储库中查找除句号或破折号之外的三个重复字符的出现。有人可以解释为什么这不起作用:
$ git grep -n "([^.-])\1{2}"
fatal: command line, '([^.-])\1{2}': Invalid back reference
Run Code Online (Sandbox Code Playgroud)
为什么\1不是对第一个捕获组的有效反向引用?
要创建捕获组,您需要使用反斜杠括号。您还需要反斜杠大括号以使其成为量词:
git grep -n "\([^.-]\)\1\{2\}"
Run Code Online (Sandbox Code Playgroud)
或者,使用扩展或 Perl 兼容的正则表达式,它们分别使用文字括号和大括号来捕获和量化:
git grep -nE "([^.-])\1{2}"
git grep -nP "([^.-])\1{2}"
Run Code Online (Sandbox Code Playgroud)