git grep <regex containing newline>
git grep <regex containing newline>
我正在尝试在 Windows 机器上使用 git bash grep 项目中的所有 line breaks after some binary operators。
尝试了以下无效的命令:
$ 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的正确方法是什么?
I don't know how to include "-" in a character set
如果要将破折号字符 (-
) 包含在字符集中,则无需对其进行转义。如果你把它放在集合中的第一个或最后一个字符,它没有它的特殊含义。
此外,无需在字符范围内转义 |
。除了 ^
(当它是范围内的第一个字符时)、-
(当它不是范围内的第一个或最后一个字符时)、]
和 \
(用于转义时]
),其他所有字符在一个字符范围内都有其字面意义(即没有特殊意义)。
也不需要在正则表达式中放入 \n
。默认情况下,grepping 工具尝试一次将正则表达式与一行匹配,git grep
也是如此。如果您只需要在行尾匹配正则表达式,则将 $
(行尾锚点)作为正则表达式的最后一个字符。
你的正则表达式应该是 [-+*|%] *$
.
放在一起,完整的命令行是:
git grep '[-+*|%] *$'
我正在尝试在 Windows 机器上使用 git bash grep 项目中的所有 line breaks after some binary operators。
尝试了以下无效的命令:
$ 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的正确方法是什么?
I don't know how to include "-" in a character set
如果要将破折号字符 (-
) 包含在字符集中,则无需对其进行转义。如果你把它放在集合中的第一个或最后一个字符,它没有它的特殊含义。
此外,无需在字符范围内转义 |
。除了 ^
(当它是范围内的第一个字符时)、-
(当它不是范围内的第一个或最后一个字符时)、]
和 \
(用于转义时]
),其他所有字符在一个字符范围内都有其字面意义(即没有特殊意义)。
也不需要在正则表达式中放入 \n
。默认情况下,grepping 工具尝试一次将正则表达式与一行匹配,git grep
也是如此。如果您只需要在行尾匹配正则表达式,则将 $
(行尾锚点)作为正则表达式的最后一个字符。
你的正则表达式应该是 [-+*|%] *$
.
放在一起,完整的命令行是:
git grep '[-+*|%] *$'