zshell grep负面的lookbehind

时间:2012-08-03 18:11:37

标签: regex grep zsh

我正在尝试使用负面的后置正则表达式,但我似乎无法让它在我的zshell中工作。我做错了吗?

  回声“Nate or nate”| grep“(\?<!N)a”

这应与 nate 中的a匹配,但 NOT Nate中的a ...对吧?

4 个答案:

答案 0 :(得分:8)

当我想到前瞻性或后瞻性断言时,我想起了Perl。您需要使用perl-regexp和单引号来查找a中的nate

echo "Nate or nate" | grep -P '(?<!N)a'

答案 1 :(得分:1)

它应该。但是,grep会打印出匹配的任何行。

如果您希望grep仅打印出匹配的部分内容,则应为其提供-o选项。

答案 2 :(得分:0)

有许多不同的正则表达式,但grep的正则表达式应该如下所示:"(?<!N)a"

答案 3 :(得分:0)

首先,您要使用单引号(zsh中的双引号将尝试展开!N),您可能需要扩展的regexen(grep -E)。另外,根据您的grep版本,它可能根本不支持0宽度断言,请检查man 7 re_format