function regexptest(patrn, col, tocol)
dim regex, myrange, i, c, matches, match, str ' 建立變數。
set regex = createobject("vbscript.regexp") ' 建立正規表示式。
regex.pattern = patrn ' 設定模式。
regex.ignorecase = true ' 設定不區分字元大小寫。
regex.global = true ' 設定全域性可用性。
set myrange = activesheet.range(col & ":" & tocol) '獲取分析資料
for each c in myrange
i = c.row
column = c.column
if regex.test(c.value) then
set matches = regex.execute(c.value) ' 執行搜尋。
if matches.count >= 1 then
cells(i, column + 1) = matches(0) '寫入第乙個值
end if
if matches.count >= 2 then
cells(i, column + 2) = matches(1) '寫入第二個值
end if
if matches.count >= 3 then
cells(i, column + 3) = matches(2) '寫入第三個值
end if
end if
next
end function
private sub commandbutton1_click()
s1 = inputbox("輸入你的正規表示式。注意,最多三次匹配,在你選擇的列的右側三列返回,請注意不要覆蓋掉有用資料")
s2 = inputbox("輸入匹配開始單元格,不能跨列,如b3,不區分大小寫")
s3 = inputbox("輸入匹配結束單元格,不能跨列,如b20,不區分大小寫")
call regexptest(s1, s2, s3)
end sub
sub test()
atr = range("a65536").end(xlup).row
btr = range("b65536").end(xlup).row
a = range("a1:a" & atr).value
b = range("b1:b" & btr).value
redim c(1 to atr, 1 to 1)
set reg = createobject("vbscript.regexp")
with reg
.global = true
.ignorecase = true
for ar = 1 to atr
for br = 1 to btr
.pattern = b(br, 1)
if .test(a(ar, 1)) then
c(ar, 1) = "匹配"
exit for
end if
next
next
end with
range("c1:c" & atr) = c
set reg = nothing
end sub
正則2 匹配開頭結尾,分組轉義
匹配結尾開頭 簡單判斷email,轉義 分組import re defmain names age age loge age1 a age age 1 age a 123 for name in names ret re.match r a za z a za z0 9 name if ret pr...
正則 num 如 1, 2 匹配的結果
num 匹配 num,其中 num 是乙個正整數。對所獲取的匹配的引用。例如,1 匹配兩個連續的相同字元。例子 正則 a b 1 此表示式的意思大概是對第乙個 匹配結果的引用 類似於匹配 aba 然後獲取a,b 檢驗 例子 正則 a b 2 此表示式的意思大概是對第二個 匹配結果的引用 類似於匹配 ...
c 實現正規表示式匹配
c 11之後封裝了自己的正規表示式,直接包含檔案即可使用,利用regex類宣告物件初始化正規表示式,regex expressionname 正規表示式 正規表示式具體語法參考這裡 regex match 方法進行匹配,匹配成功返回1,失敗返回0 cmatch和smatch類分別存放char 和st...