Regex 吉特·格雷普<;包含换行符的正则表达式>;
我正试图在Windows机器上使用git bash在一个项目中实现所有功能 尝试了以下不起作用的命令:Regex 吉特·格雷普<;包含换行符的正则表达式>;,regex,git,git-grep,Regex,Git,Git Grep,我正试图在Windows机器上使用git bash在一个项目中实现所有功能 尝试了以下不起作用的命令: $ git grep "[+-*\|%]\ *\n" fatal: command line, '[+-*\|%]\ *\n': Invalid range end $ git grep "[+\-*\|%]\ *\n" fatal: command line, '[+\-*\|%]\ *\n': Invalid range end 好的,我不知道如何在字符集中包含“-”,但在删除它之后,
$ git grep "[+-*\|%]\ *\n"
fatal: command line, '[+-*\|%]\ *\n': Invalid range end
$ git grep "[+\-*\|%]\ *\n"
fatal: command line, '[+\-*\|%]\ *\n': Invalid range end
好的,我不知道如何在字符集中包含“-”,但在删除它之后,\n
仍会与字符n
字面上匹配:
$ git grep "[+*%] *\n"
somefile.py: self[:] = '|' + name + '='
^^^
将反斜杠转义一次(\\n
)无效,转义两次(\\\n
)将导致正则表达式匹配\n
(字面意思)
到这里去grep的正确方法是什么
我不知道如何在字符集中包含“-”
如果要在字符集中包含短划线字符(-
),则无需对其进行转义。如果你把它放在集合中的第一个或最后一个字符,它就没有特别的意义
此外,不需要在字符范围内转义|
。除了^
(当它是范围内的第一个字符时)、-
(当它不是范围内的第一个或最后一个字符时)、]
和\
(当它用于转义]
时),所有其他字符在字符范围内都有其字面意义(即没有特殊意义)
也不需要在regexp中放入\n
。默认情况下,grepping工具会尝试一次将regexp与一行匹配,而git grep
也会这样做。如果只需要在行尾匹配regexp,则将$
(行尾锚点)作为regexp的最后一个字符
您的regexp应该是[-+*|%]*$
总的来说,完整的命令行是:
git grep '[-+*|%] *$'
谢谢我必须使用
grep'[-+*|%]\s*$”
来解释windows行的结尾。事实证明,我也能从中找到答案。另见: