正则表达式

正则表达式

我在O'reilly图书上见到一个比较变态的表达式,大家看看能不能看得懂:
[code:1]grep "[\"[{(]*book[]})\"?!.,;:'s]*" bookwords[/code:1]
grep "[\"[{(]*book[]})\"?!.,;:'s]*" bookwords
感觉 有点问题
there is no problem!
the first "[" matches the third "]".
这个命令匹配以下字符串:以零个或多个 [、"、[、{、( 字符开始,中间是字符串“book”,其后接零个或多个字符 ]、}、)、"、?、!、.、,、;、:、'、s。其实让人可能感到困惑的地方是:在[后面的字符[只是要匹配的一串字符中的一个,在这里并无特殊意义;另外一个[]中,放在[后面的]也会取消特殊含义,转变为一个普通字符;最后,因为这个命令是在命令行中执行的,所以\"在这里是一个shell转义,最后实际被传到grep中的会是单个字符"。