0. 元字符:.*?^[]+等。
1. [abc]与(a|b|c)的区别:前者匹配普通字符,也就是说[]里面的都是普通字符,即使是.?*也一样([^除外,表示否定,-也除外,表示范围)。而(a|b|c)里的()模式内,不仅仅可以用普通字符,还可以用更复杂的表达式。
2. egrep -options 'pattern' file
e.g., egrep -i '^abc' thefile
3. 单词分界符:\<匹配单词开始,\>匹配单词结束。如\<cat匹配以cat开头的单词,cat\>匹配以cat结束的单词。而\<cat\>则精确匹配cat这个单词。注意通常在egrep中,单词的分界,使用字符和数字的开始/结束来标识,也就是说,abc-def会被认为是两个单词。
4. 反向引用:'(abc)\1',其中的\1引用了前面的第一个()分组的正则表达式。
5. 分组嵌套:在4中,如果出现(abc)(def)这样的分组,显然(abc)为\1,(def)为\2。但是如果出现嵌套的,如(abc(def))(gh),则(abc(def))为\1,(def)为\2,(gh)为\3。
6. 非捕获型括号:(?:...)。在5的例子中,如果希望(def)只分组,但不被捕获到\2中。可以用:(abc(?:def))(gh),这样,(abc(def))仍然为\1,但(gh)为\2。