Regex 对结束方括号求反
以下内容不显示任何匹配项:Regex 对结束方括号求反,regex,grep,Regex,Grep,以下内容不显示任何匹配项: echo "A" | egrep '[^\]]' 如果我将\[替换为\],它会工作。那么,如何匹配一个非闭方括号呢?在括号表达式中,您不必转义字符,所以它只是 grep '[^]]' 您也不需要egrep/grep-E,不涉及扩展正则表达式 你的另一次尝试 grep '[^\[]' 之所以有效,是因为[可以位于括号表达式中的任何位置,但]必须是第一个字符。由于您不必转义,\实际上是文本,结果将是“除\或[之外的任何内容”: 如果涉及更多字符,请确保将]粘贴到开头
echo "A" | egrep '[^\]]'
如果我将
\[
替换为\]
,它会工作。那么,如何匹配一个非闭方括号呢?在括号表达式中,您不必转义字符,所以它只是
grep '[^]]'
您也不需要egrep
/grep-E
,不涉及扩展正则表达式
你的另一次尝试
grep '[^\[]'
之所以有效,是因为[
可以位于括号表达式中的任何位置,但]
必须是第一个字符。由于您不必转义,\
实际上是文本,结果将是“除\
或[
之外的任何内容”:
如果涉及更多字符,请确保将]
粘贴到开头:
grep '[]abc]'
grep '[^]abc]'
如果你没有,比如
grep '[^a]bc]'
表达式将被解释为“除
a
之外的任何内容,后跟bc]
”这只是一个简化的示例。考虑<代码> [^ ] ] < /代码>。解释器会不会因为认为第一个]
结束字符类定义而感到困惑?@AlwaysLearning是的,它会]
必须是表达式中的第一个字符,如果适用,只能在前面加上否定的^
。
grep '[]abc]'
grep '[^]abc]'
grep '[^a]bc]'