我想要打印在文件中所有没有紧随字符e
的字符b
。我尝试使用负向先行断言,但它没有起作用。
grep 'b(?!e)' filename
grep '(?!e)b)' filename
egrep 'b(?!e)' f3.txt
当我运行这些命令时,没有任何显示,也没有错误或其他提示。我还检查了其他人发布的类似文章,但无法运行它。我想要打印在文件中所有没有紧随字符e
的字符b
。我尝试使用负向先行断言,但它没有起作用。
grep 'b(?!e)' filename
grep '(?!e)b)' filename
egrep 'b(?!e)' f3.txt
当我运行这些命令时,没有任何显示,也没有错误或其他提示。我还检查了其他人发布的类似文章,但无法运行它。grep -E 'b([^e]|$)' filename
这个命令会匹配以'b'开头且后面紧跟一个非'e'字符的字符串,或者以'b'结尾的字符串。
-P
的Perl正则表达式,则可以使用look-around功能:$ grep -P 'b(?!e)' <<< 'be' # Gets no output
$ grep -P 'b(?!e)' <<< 'bb'
bb
$ grep -P 'b(?!e)' <<< 'b'
b
与grep -E
(在此情况下)唯一的区别是您不必考虑行尾的情况(请参见pilcrow的答案)。
grep "b[^e]" filename.txt
可以吗?在Linux上用'
。如果使用grep -E
来支持扩展正则表达式呢?建议翻译:你可以尝试使用grep "b[^e]" filename.txt
来实现这个功能,或者在Linux上使用带有引号的命令。如果想要使用扩展正则表达式支持,可以尝试使用grep -E
命令。 - TessellatingHecklergrep -P
可能使用Perl兼容的正则表达式并支持它。 - TessellatingHeckler