iBu*_*Bug 10 regular-expression
说如果我想找到包含小写字母和数字的东西,这很容易
生产文本| grep -E '[0-9a-z]'
括号对于匹配一组字符很有用,但是那些有点特殊的呢?
如果我想使用括号,匹配任何字符,但其中之一:一个右括号],破折号(或连字符)“ - ”,两个斜线/和\,插入符号^,一个冒号:。
它看起来像这样(我知道这行不通)?
[^]-/\^:]
don*_*sti 11
要匹配括号表达式中的文字]和文字-,您必须像这样使用它们:
[^]/\^:-]
Run Code Online (Sandbox Code Playgroud)
或者,甚至更好,因为某些工具需要转义反斜杠:
[^]/\\^:-]
Run Code Online (Sandbox Code Playgroud)
即,
如果右方括号 ( ']' ) 出现在列表中的第一个位置(在初始的 '^' 之后,如果有)
和
连字符减号字符将失去其特殊含义并在括号表达式中表示自己如果它首先出现(在初始的 '^' 之后,如果有的话)或最后出现在列表中,则被视为它本身,
因此
如果括号表达式指定了 '-' 和 ']',则应首先放置 ']'(在'^'(如果有)和括号表达式中的最后一个 '-'。ERE和BRE 的
括号表达式规则相同。
也许奇怪的是,您需要在特定位置有几个字符。您必须将其]作为集合中的第一个字符,并且-必须是集合中的最后一个字符。
这是满足您要求的 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
Run Code Online (Sandbox Code Playgroud)