正則表達式通常用來表達一組具有共通特性(pattern)的字符串集合。
regexp(regular expression)
的精髓,就是用最少的字符,表達最大的字符集。
regexp
emacs的專利,而是UNIX下的產物。

regexp
下的特殊字符:

***
第一類字符:代表選擇所有
.          
代表除了newline以外的所有單個字符。甚至是一些特殊字符。
           
若想表達任意多的任意字符,用".*"表示,.不包含換行符的

***
第二類字符:postfix character,用來表示重復出現的單字符.
*          
表示重復符號前的字符從0到無限多次
           
例如:ab*->a,ab,abb,abbb,abbb...
+          
表示重復符號前字符從1到無限多次
           
例如:ab+->ab,ab,abb,abbb,abbbb...
          表示重復符號前的字符0次或1
           
例如:ab?->a,ab

***
第三類:character set 用來表示某個特定的字集中的元素
[]         
表示某個特定的字集
           
例如:[a@!dl3]->a,@,!,d,l,3任選其一
                 [a-g]->a,b,c,d,e,f,g
任選其一
[]*        
例如:c[ab]d->cad,cbd
            c[ab]*d->cd,cad,cbd,caad,caabd,caabbd.....
[]+        
例如:c[ab]+d->cad,cbd,caabd,cabbd.....
[]?        
例如:c[ab]?d->cd,cad,cbd

       
任何特殊字符,出現在[]內,都會被視為一般字符,除了兩個,^,-

^          
若出現在集合的第一個位置,表示""
           
例如:[a-zA-z]表示英文字母集合 [^a-zA-z]表示所有非英文字母集合
-          
表示有序集合的范圍
           
例如:[a-g]表示[abcdefg],[0-9]表示[0123456789]

***
第四類:指定字符出現在行首或者行尾
^          
若出現在字符前,表示這個字符在行首出現。
           
例如:^the 表示以The為行首的字符串
$          
若出現在字符后,表示這個字符在行尾出現
           
例如:out$ 表示以out為行尾的字符串
\<         
單詞開頭
\>         
單詞結尾

***
第五類:\ 的用法
\          
有兩種含義:
           
使特殊關鍵字變成普通字符,例如\\代表"\"
           
或使普通字符變成特殊字符,例如:
                 |,(,),d,',`,b,B,<,>,w,W,sc,Sc
之前加上了\,變為特殊字符

           
下面僅討論幾個常用的
\|         
表示"" 例如:is\|it-> ISIs,iS,is,It,it,iT,IT
\( \)           
用來表達正則表達式的范圍(就是左右括號,用來規范表達式范圍)
           
例如:

\(read\|get\)file->readfile,getfile
                 ba\(na\)*->ba,bana,banana,bananana.....

***
正則表達式的替換文本用法

\&         
表示搜索文本的整個字符串。
           
例如:replace .d \%d 代表在所有滿足"?d"格式的文本后面再附加一個d 例如ad替換為add
\num.      
表示搜索文本的地num.個字符串組
           
例如:replace \(a[ad]\)-safe \1 將替換aa-safead,ad-safeaa
\#         
表示替換次數,第一次替換為0,逐次增加
           
例如:replace a[ad] \&\# 將替換aaaa0adad1
\?         
手動輸入替換結果 ??????????