正規表示式(regular expression),常被用來檢驗、替換符合某個模式(規則)的字串,在**中常縮寫為regexp。
vba中並沒有直接提供正文表示式物件,需要借助vbscript
的正則物件。如果使用前期繫結,那麼就需要在vbe中引用如下擴充套件庫。
也可以使用後期繫結的方式建立正則物件,**如下。
set objregex = createobject("vbscript.regexp")
正則物件有四個屬性和三個方法。
屬性說明
方法說明
global
boolean值,指明單次匹配或者全部匹配
execute
將正則模式應用於字串,並返回matchs集合
ignorecase
boolean值,指明匹配模式是否大小寫敏感
replace
替換正則模式匹配的文字
pattern
指定用於搜尋的正則模式
test
對字串執行正則匹配,返回boolean值說明匹配是否成功
multiline
指定的搜尋字串分布在多行
待處理的文字如下,現需要提取其中的姓名漢字和**數字。
name:張三丰,phone:13801380000示例**如下。
sub regexpdemosyntax()
dim objregex as object
set objregex = createobject("vbscript.regexp")
objregex.pattern = "name:(.*?),phone:(\d+)"
objregex.global = true
mystring = "name:張三丰,phone:13801380000"
set objmh = objregex.execute(mystring)
if objmh.count > 0 then
with objmh(j)
debug.print .submatches(0), .submatches(1)
end with
end if
set objregex = nothing
end sub
輸出結果如下:
張三丰 13801380000由示例可以看到正則物件的屬性和方法並不複雜,也可以說too ******。但是想用好正則就不是那麼簡單的事情,其核心在於如何編寫正確高效的正則匹配模式,即設定
pattern
引數。
在接下來的幾篇部落格中將介紹一些excel中正則應用例項。
vba之正規表示式(2)-- 批量修改公式
vba之正規表示式(3)-- 特殊公式計算
vba之正規表示式(4)-- 提取日期和金額
vba之正規表示式(5)-- 中文字元
vba之正規表示式(6)-- 設定音標格式
vba之正規表示式(7)-- 乾坤大挪移(資料整理)
vba之正規表示式(8)-- 重複字元分組
vba之正規表示式(9)-- 新增千分位(1/3)
vba之正規表示式(10)-- 新增千分位(2/3)
vba之正規表示式(11)-- 新增千分位(3/3)
VBA 正規表示式
正規表示式的概述 正規表示式原本是形式語言理論中的概念,與編譯器的構造有密切的聯絡。但是作為乙個應用軟體的使用者,我們沒有必要去細究正規表示式的嚴格定義和處理方法。本文將從實用的角度出發,闡述引入正規表示式的目的 正規表示式的命令格式,以及如何利用正規表示式完成一些實際的文字處理工作。我們在處理文字...
VBA 正規表示式
1.寫好正規表示式,在資料擷取處理中是十分有優勢的,以下舉幾個例子來學習一下正規表示式的用法 option explicit public function getnum2 str as string with createobject vbscript.regexp global false 全域...
正規表示式 1 正規表示式基礎
1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...