小编Pra*_*pta的帖子

Grep 正则表达式不适用于方括号

所以我试图在 grep 中编写一个正则表达式来匹配方括号,即[ad]应该匹配[]。但是我在使用捕获组和字符类时得到了不同的结果。放在'正则表达式字符串的开头和结尾的结果也不同。

所以这些是我得到的不同结果。

使用捕获组工作正常

echo "[ad]" | grep -E '(\[|\])'
[ad]
Run Code Online (Sandbox Code Playgroud)

使用捕获组而不'给出语法错误

echo "[ad]" | grep -E (\[|\])
bash: syntax error near unexpected token `('
Run Code Online (Sandbox Code Playgroud)

使用字符类[后跟]不提供任何输出

echo "[ad]" | grep -E [\[\]]
Run Code Online (Sandbox Code Playgroud)

使用字符类]后跟[正常工作

echo "[ad]" | grep -E [\]\[]
[ad]
Run Code Online (Sandbox Code Playgroud)

使用带有]后跟[和使用的字符类'不起作用

echo "[ad]" | grep -E '[\]\[]'
Run Code Online (Sandbox Code Playgroud)

如果有人能解释它们之间的区别,那就太好了。

regex bash grep quoting

3
推荐指数
1
解决办法
4770
查看次数

标签 统计

bash ×1

grep ×1

quoting ×1

regex ×1