如何使用正则表达式在访问vba中拆分多个分隔符

时间:2011-10-24 23:31:19

标签: regex ms-access vba

我在解决如何在access vba中使用正则表达式拆分多个分隔符时遇到问题。我想用一个字符串说“This; is,really:annoying”和一个由管道(; |,)分隔的用户定义的分隔符,以便我得到以下结果“This”,“is”,“真的:烦人的“无论我做什么我都无法让这个工作。在python中我只会使用re.split,但vba没有我知道的选项。我已经发布了我尝试过的代码:

 Private Sub Splitter(ByVal UnmodText As String, ByVal SplitDelimiters As String)
   Dim SplitExp As New RegExp
   Dim SplitMatches As MatchCollection
   Dim SplitMatch As Match
   SplitExp.IgnoreCase = True
   SplitExp.Global = True
   'SplitExp.Pattern = ".(" & SplitDelimiters & ")" & "|(?<=" & SplitDelimiters & ").$"
   'SplitExp.Pattern = ".{0,}(?=(" & SplitDelimiters & "))"
   SplitExp.Pattern = "(?!(" & SplitDelimiters & "){2})"
   MsgBox SplitExp.Pattern
   Set SplitMatches = SplitExp.Execute(UnmodText)
   For Each SplitMatch In SplitMatches
       MsgBox SplitMatch.Value
   Next
 End Sub

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

这将返回一个变量数组,给定要拆分的字符串,以及一个包含竖线分隔符的字符串。

Function SplitPlus(val As String, seps As String) As Variant
    Dim x As Integer, arrSeps As Variant
    Dim lb As Integer, ub As Integer

    arrSeps = Split(seps, "|")
    lb = LBound(arrSeps)
    ub = UBound(arrSeps)

    If ub > lb Then
        For x = lb + 1 To ub
            val = Replace(val, arrSeps(x), arrSeps(lb))
            'Debug.Print val
        Next x
    End If
    SplitPlus = Split(val, arrSeps(lb))
End Function