Git 如何修复:致命:无效的反向引用
我试图在git repo中找到三个重复字符,而不是句号或破折号。有人能解释为什么这不起作用吗:Git 如何修复:致命:无效的反向引用,git,grep,Git,Grep,我试图在git repo中找到三个重复字符,而不是句号或破折号。有人能解释为什么这不起作用吗: $ git grep -n "([^.-])\1{2}" fatal: command line, '([^.-])\1{2}': Invalid back reference 为什么\1不是第一个捕获组的有效反向引用?要创建捕获组,需要将括号反斜杠。您还需要将花括号反斜杠,使其成为量词: git grep -n "\([^.-]\)\1\{2\}" 或者,使用扩展的或与Perl兼容的正则表达式,
$ git grep -n "([^.-])\1{2}"
fatal: command line, '([^.-])\1{2}': Invalid back reference
为什么
\1
不是第一个捕获组的有效反向引用?要创建捕获组,需要将括号反斜杠。您还需要将花括号反斜杠,使其成为量词:
git grep -n "\([^.-]\)\1\{2\}"
或者,使用扩展的或与Perl兼容的正则表达式,分别使用文字括号和花括号进行捕获和量化:
git grep -nE "([^.-])\1{2}"
git grep -nP "([^.-])\1{2}"
git之所以说“无效的反向引用”,是因为\1
匹配POSIX反向引用语法,但纯(
和)
与预期语法不匹配。POSIX基本正则表达式或BRE语法将纯(
和)
视为逐字文本,并且仅将\(
和\)
视为捕获组分隔符。有关详细信息,请参阅。