excel實現正則一一匹配功能

2021-07-03 13:34:13 字數 1742 閱讀 1117

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...