接著講一下 subpattern,subpattern 基本上就是一般的正規表示式,只是被 ‘\(’, ‘\)’ 包起來。 而整個 subpattern 可以視為一個單元,並對它做出現次數的描述。 比如要找 ababab,就可以寫成 ‘\(ab\)\{3}’ ,可以做出更細微的描述。 subpattern 除了用來做更細部的描述外,還有個功能是用在 back reference (沒有好的翻譯法),後面講到取代時會再說明。
最後來講講幾個好用的特殊符號,這些符號是用來描述匹配要從哪裡開始,並不會真的有匹配的字元,又被稱為 anchor。 首先是用來匹配行首的 ‘^’ 與行尾的 ‘$’ ,有沒有覺得很熟悉,前面也有提過,一般模式下移動游標到行首與行尾的按鍵就是這兩個。 另外就是用來匹配字邊緣的 ‘\<’ 與 ‘\>’ ,這主要是用來更精確地找一個字,這兩個符號只會匹配到空白字元與一般的字之間。 可能舉個例比較清楚,假設有個文件內容如下
This is a demonstration of search with regular expression. I want to show how to use \< and \>.
如果我們想找 is,直接打 ‘/is’ 的話,This 的 is 跟 is 都可以是合法的匹配結果。 同樣的如果想找 how,打 ‘/how’ ,show 的 how 跟 how 也都是合法的匹配結果。 這時就可以使用 ‘\<’ 與 ‘\>’ 。 ‘/\<is\>’ 只會匹配到 is 而不會匹配到 This 的 is,因為 This 的 is 並沒有被空白字元所包起來。 同理 ‘/\<how\>’ 只會匹配到 how 而不會匹配到 show 的 how。
這裡做個小補充,如果一個符號在正規表示式有特殊意義的話,都可以用 \ 跳脫字元來取消其特殊意義。 一個超特殊的符號 ‘.’ 代表可以匹配到任意字元。 還有就是幾個無法用一般符號表示的字元,像是 ‘\t’ 代表 TAB, ‘\n’ 代表換行符號。
最後的最後舉幾個實際的例子來體會一下正規表示式的使用
希望是沒有打錯啦。