|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
- Sub 正则提取三连数()
- Dim St$, St1$, Arr(1 To 4), Reg As Object, Dic As Object
- Dim Mat, Matt, Fg
- Fg = "/"
- St = "777.366---.777+++.5-.9999999//0.8--0.333+0.3333"
- ' 按无匹配先出结果
- Arr(1) = "无"
- Arr(2) = "无"
- Arr(3) = St
- Arr(4) = St
- ' 正则取得连续4个及以上数字的建立字典
- Set Reg = CreateObject("vbscript.regexp")
- Set Dic = CreateObject("Scripting.Dictionary")
- With Reg
- .Global = True
- .Pattern = "(\d)\1{3,}"
- Set Mat = .Execute(St)
- If .test(St) Then
- For Each Matt In Mat
- St1 = Matt.submatches(0)
- Dic(St1) = ""
- Next 'matt
- End If
- End With
- ' 正则取得连续3个数的得到规则1规则3结果
- ' 正则取得连续3个数的得到规则2规则4结果
- With Reg
- .Global = True
- .Pattern = "(\d)\1{2,}"
- Set Mat = .Execute(St)
- If .test(St) Then
- For Each Matt In Mat
- If Matt.Length = 3 Then
- St1 = Matt.submatches(0)
- If Dic.Exists(St1) Then
- Arr(1) = Arr(1) & Fg & Matt
- Arr(3) = Left(Arr(3), Matt.FirstIndex) & Replace(Arr(3), Matt, "aaa", Matt.FirstIndex + 1, 1)
- Else
- Arr(1) = Arr(1) & Fg & Matt
- Arr(2) = Arr(2) & Fg & Matt
- Arr(3) = Left(Arr(3), Matt.FirstIndex) & Replace(Arr(3), Matt.Value, "aaa", Matt.FirstIndex + 1, 1)
- Arr(4) = Left(Arr(4), Matt.FirstIndex) & Replace(Arr(4), Matt.Value, "aaa", Matt.FirstIndex + 1, 1)
- End If
- End If
- Next 'matt
- Arr(1) = Mid(Arr(1), 3)
- Arr(2) = Mid(Arr(2), 3)
- End If
- End With
- [b1:e1] = Arr
- Set Dic = Nothing
- End Sub
复制代码 |
|