正規表示式
正規表示式是不同於Microsoft 所制定的「萬用字元」,另一種搜尋法。其功能較為強大,但也較複雜。
正規表示式分為兩種,一種是C 類語言的正規表示式,另一種是zh_tw.Big 的正規表示式,兩種有些許差異,一般正規表示式指的是C 類語言的表示法。
正規表示式裡,集合符號為「[]」,如果要表示一個{a, b, c} 集合,則可使用「[abc]」表示。其中,有部份特殊的集合可以使用:
][:album:] //英文或數字。
][:alpha:] //英文字母。
][:lower:] //小寫英文。
][:upper:] //大寫英文。
][:digit:] //數字。
][:punct:] //標點符號。
][:blank:] //空白或縮排字元。
][:space:] //任何會產生空白的字元,如: 空白鍵、"vbCr" 等。
][:cntrl:] //控制按鍵,如"Ctrl"、"Delete"、"vbCr"、"vbLf" 等。
][:graph:] //除了空白或縮排字元外的所有字。
][:print:] //所有可列印字元。
另外,只有一個成員的集合可以省略「[]」,也就是一般字元其實都是多個單一成員的集合的串聯。
][a] = a
]ab = [a][b]
如果一個集合的名字前面加上「^」,則表示「不存在該些字元的集合」。
][^abc] //用這個集合會搜尋到不包含"a"、"b"、"c" 的結果。
][^[:digit:]] //用這個集合會搜尋到不包含數字的結果。
如果在集合外面使用「^」則表示行首,在尾端使用「$」則表示行尾。
]^a //表示行首為"a" 的結果。
]^[abc] //表示行首為"a" 或"b" 或"c" 的結果。
]^[^abc] //行首不為"a" 或"b" 或"c" 的結果。
]a$ //行尾為"a" 的結果。
][abc]$ //表示行尾為"a" 或"b" 或"c" 的結果。
在Microsoft 萬用字元裡,「?」代表單一的未知字元,「*」代表未知數量的未知字元。在正規表示式裡,「.」代表單一的未知字元,等同於「?」,「*」則不一樣,一個集合後面接上「*」表示自然數個的該集合字元。
]a.b //相當於萬用字元的「a?b」,其結果可能是「aab」、「abb」、「a b」等等。
萬用字元]a*b //表示「a」和「b」中間有未知數量的未知字元,其結果可能是「aab」、「abb」、「accb」、「ab」等等。
]a*b //表示未知數量的「a」後面接上一個「b」,其結果可能是「aab」、「aaab」、「aaaab」、「ab」、「b」,但不可能是「abb」或「acb」。
如果想要達到萬用字元「*」的效果,可以使用正規表示式的「.」與「*」合成。
]a.*b //「.」代表一個未知字元,後面接上「*」表示未知數量的未知字元,其結果可能是「aab」、「accb」、「ab」。
在一個集合後面接上{下限, 上限} 即可搜尋固定範圍內的字元數的集合字元。
]a{10, 100} //最少10 個,最多100 個的「a」。
][:digit:]{, 10} //10 個以下的數字。
][:lower:]{10, } //至少10 個的小寫英文。
