“ [] []”如何匹配“ [或]”?

时间:2019-03-18 03:00:37

标签: regex grep

考虑:

$ echo 'a [b][c]' | awk -F '[\\]\\[]' '{print $2}'
b

作为[]的有效正则表达式,对我来说很有意义。

但是这也可行:

$ echo 'a [b][c]' | awk -F '[][]' '{print $2}'
b

同样在grep中:

$ echo 'a [b][c]' | grep '[][]'
a [b][c]

但是我不知道如何。 [][]似乎连续两次“不匹配字符”(即[])。发生什么事了?

1 个答案:

答案 0 :(得分:4)

请参阅POSIX正则表达式规范(http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_03_05)中“ RE方括号表达式”中的列表项目1

The <right-square-bracket> ( ']' ) shall lose its special meaning and represent itself in a bracket expression if it occurs first in the list

鉴于,[][]表示一个括号表达式[...],其中包含两个字符列表,][

使用反斜杠在括号表达式中转义]是非POSIX,但是某些工具的某些版本可以接受-YMMV。