第四章 正則表達式 4.6 排除匹配 把乘方號^放在[ ]里正則表達式的前面,表示排除匹配,,也就是反選,,把[ ]里的任何一個條件都排除掉,剩下的才是匹配結果,。如: “電話號碼7564665”,,正則表達式“[^0-9]+”,表示把所有的數(shù)字都排除掉,,匹配結果是“電話號碼”,。 小程序: 把下面的古詩逐句選出來,輸送到右邊的一列單元格去,。 蕭蕭梧葉送寒聲,,江上秋風動客情。 知有兒童挑促織,,夜深籬落一燈明,。 Sub 排除匹配() Dim reg As New RegExp With reg .Global = True .Pattern = '[^,,。]+[,,。]' Set 結果 = .Execute([a1]) For Each ss In 結果 [a1].offset(i, 1) = ss i = i + 1 Next End With End Sub 這個正則表達式'[^,,,。]+[,,。]',,首先做排除匹配,匹配不是',,'和',。'的多個字符,然后再匹配',,'或',。'做結尾,。得到的結果是:
或者我們再把古詩修改一下: 夜書所見 葉紹翁 蕭蕭梧葉送寒聲,,江上秋風動客情。 知有兒童挑促織,,夜深籬落一燈明,。 小程序修改如下: Sub 排除匹配() Dim reg As New RegExp With reg .Global = True .Pattern = '[^,,。\r\n]+[,,。\n]' Set sj = .Execute([a1]) For Each ss In sj [c1].offset(i, 1) = ss i = i + 1 Next End With End Sub 現(xiàn)在正則表達式變成了'[^,,,。\r\n]+[,,。\n]',,還是先做排除匹配,匹配不是',,',、'。',、換行符,、回車符的多個字符,然后再匹配',,',、'。'或換行符做結尾,。得到的結果是:
|
|