1. 程式人生 > >3.2.2.4 文本匹配錨點

3.2.2.4 文本匹配錨點

完成 字符串 12個 bcd 刪除 正則 情況 範例 有時

再介紹兩個 mate 字符就能完成整個 BRE 的介紹了。這兩個 meta 字符是脫字符號(^)與貨幣符號($),它們叫做錨點(anchor),因為其用途在限制正則表達式匹配時,真對要被匹配字符串的開始或結尾進行匹配(^在此處的用法與方括號表達式裏的完全不同)。假定現在有一串要進行匹配的字:abcABCdefDEF ,以下標列舉匹配範例: 正則表達式內錨點的範例
模式 是否匹配 匹配文本(粗體)/ 匹配失敗的理由
ABC 居中的第4、5及6個字符:abcABCDEFdefDEF
^ABC 限定匹配字符串的起始處
def 居中的第7、8及9個字符:abcABCDEFdefDEF
def$ 限制匹配字符串的結尾處
[[:upper:]]\{3\} 居中的第4、5及6個字符:abcABCDEFdefDEF
[[:upper:]]\{3\}$ 居中的第10、11及12個字符:abcABCDEFdefDEF
^[[:alpha:]]\{3\} 起始的第1、2及3個字符:abcABCdefDEF
^與$也可同時使用,這種情況是將括起來的正則表達式匹配整個字符串(或行)。有時^$這樣簡易正則表達式也很好用,它可以用來匹配空的字符串或行列。例如在 grep 加上 -v 選項可以用來顯示所有不匹配與模式的行,使用上面的做法,便能過濾掉文件裏的空行。 cc -E foo.c | grep -v ‘^$‘ > foo.out 預先刪除空行
^與$ 僅在BRE的起始與結尾處具有特殊用途。若出現在字符串中間則表示自身。

3.2.2.4 文本匹配錨點