AXO*_*AXO 4 regex git git-grep
我正在尝试在 Windows 机器上使用 git bash 的项目中的某些二进制运算符之后grep 所有换行符。
尝试了以下不起作用的命令:
$ git grep "[+-*\|%]\ *\n"
fatal: command line, '[+-*\|%]\ *\n': Invalid range end
$ git grep "[+\-*\|%]\ *\n"
fatal: command line, '[+\-*\|%]\ *\n': Invalid range end
Run Code Online (Sandbox Code Playgroud)
好的,我不知道如何在字符集中包含“-”,但是在删除它之后仍然可以从字面上\n
匹配字符n
:
$ git grep "[+*%] *\n"
somefile.py: self[:] = '|' + name + '='
^^^
Run Code Online (Sandbox Code Playgroud)
转义反斜杠一次 ( \\n
) 无效,转义两次 ( \\\n
) 会导致正则表达式匹配\n
(字面意思)。
在这里 grep 的正确方法是什么?
我不知道如何在字符集中包含“-”
-
如果要将破折号字符 ( ) 包含在字符集中,则无需对其进行转义。如果将它放在集合中的第一个或最后一个字符,则它没有特殊含义。
此外,无需|
在字符范围内转义。除了^
(当它是范围中的第一个字符时)、-
(当它不是范围中的第一个或最后一个字符时)]
和\
(当它用于转义时]
),所有其他字符都有它们的字面含义(即没有特殊的含义)在一个字符范围内。
也不需要放入正\n
则表达式。默认情况下,grepping 工具尝试一次将正则表达式与一行匹配,git grep
并执行相同的操作。如果您只需要在行尾匹配正则表达式,则将$
(行尾锚点)作为正则表达式的最后一个字符。
你的正则表达式应该是[-+*|%] *$
.
放在一起,完整的命令行是:
git grep '[-+*|%] *$'
Run Code Online (Sandbox Code Playgroud)