我在解决如何在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
非常感谢任何帮助!
答案 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