正则表达式 – 使用正则表达式执行方法在一个字符串中进行多个VBA匹配

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用正则表达式执行方法在一个字符串中进行多个VBA匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图根据1.程度匹配各种职位的经验水平.2.经验年数.模式相当简单(例如:“BS / 5”将是具有5年经验的科学学士学位.我也有符合此方案的条目,但在同一个字符串中具有多个学位和经验水平(例如:“BS / 5-MS / 2“)被认为是等价的.我有一个基本的函数,它将匹配并找到子字符串模式,但它永远不会返回多个匹配,即使我已将.Global属性设置为true为regexp对象.任何想法?代码如下:
  1. On Error Resume Next
  2. ActiveWorkbook.VBProject.References.AddFromGuid "{3F4DACA7-160D-11D2-A8E9-00104B365C9F}",5,5
  3.  
  4. Dim theRegex As Object
  5. Dim theString As String
  6.  
  7. Set theRegex = CreateObject("VBScript.RegExp")
  8.  
  9. With regex
  10. .MultiLine = False
  11. .Global = True
  12. .IgnoreCase = False
  13. End With
  14.  
  15. theRegex.Pattern = "([A-z][A-z][A-z]?/[0-9][0-9]?)"
  16.  
  17. theString = "MS/9-PhD/4"
  18.  
  19. Set MyMatches = theRegex.Execute(theString)
  20.  
  21. Debug.Print "SubMatches.Count: " & MyMatches.Item(0).SubMatches.Count
  22.  
  23. If MyMatches.Count <> 0 Then
  24. With MyMatches
  25. For myMatchCt = 0 To .Count - 1
  26. Debug.Print "myMatchCt: " & myMatchCt
  27. For subMtCt = 0 To .Item(subMtCt).SubMatches.Count - 1
  28. Debug.Print "subMtCt: " & subMtCt
  29. Debug.Print ("," & .Item(myMatchCt).SubMatches.Item(subMtCt))
  30. Next
  31. Next
  32. End With
  33. Else
  34. Debug.Print "No Matches"
  35. End If
尝试使用Regex更改线路

  1. With theRegex
  2. .MultiLine = False
  3. .Global = True
  4. .IgnoreCase = False
  5. End With

您的On Error resume next语句正在伪装错误.

猜你在找的正则表达式相关文章