Как разделить на несколько разделителей в доступе VBA с помощью регулярных выражений - PullRequest
1 голос
/ 25 октября 2011

У меня проблемы с выяснением того, как разделить несколько разделителей с помощью регулярных выражений в Access VBA.Я хочу взять строку с надписью «Это; действительно, раздражает» и разделить пользовательские разделители на три строки, разделенные трубками (; |,), чтобы получить следующий результат «Это», «есть», «действительно»:раздражает "Что бы я ни делал, я не могу заставить это работать.В 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 Ответ

3 голосов
/ 25 октября 2011

Будет возвращен вариантный массив с заданной строкой для разделения и строкой, содержащей разделители, разделенные каналом.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...