使用正则表达式匹配特殊字符

使用正则表达式匹配特殊字符

如果我想找到包含小写字母和数字的内容,那么这很容易

生产文本 | grep -E '[0-9a-z]'

括号对于匹配一组字符很有用,但是那些有些特殊的字符呢?
如果我想,使用括号匹配任何特点其中之一:右括号]、破折号(或连字符)“-”、斜杠/\、插入符号^、冒号:
它看起来像这样吗(我知道这行不通)?

[^]-/\^:]

答案1

匹配一个文字]和一个-文字括号表达式你必须像这样使用它们:

[^]/\^:-]

或者,甚至更好,因为某些工具需要转义反斜杠

[^]/\\^:-]

那是
如果右方括号 ( ']' ) 在列表中第一个出现(在初始 '^' 之后,如果有),则将失去其特殊含义并在方括号表达式中表示自己

如果连字符减号字符在列表中首先出现(在初始“^”之后,如果有)或最后出现,则应将其视为其本身
因此
如果括号表达式同时指定“-”和“]”,则在括号表达式中,“]”应放在第一位(在“^”之后,如果有),“-”放在最后。
括号表达式的规则与埃雷布雷

答案2

也许奇怪的是,你需要在特定的地方有几个角色。您必须是]集合中的第一个字符,并且-必须是集合中的最后一个字符。

这是满足您要求的 RE [^]\^/-]::

echo 'Hello[world]-[sun] ^^ 4/5 or 3\4' | grep -Eo '[^]\^/-]' | xargs
H e l l o [ w o r l d [ s u n 4 5 o r 3 4

相关内容