Excel VBA Regex заменяет теряет один символ - PullRequest
0 голосов
/ 09 мая 2018

Код ниже соответствует и заменяет, но цифра рядом с группой захвата используется. Куда я иду не так?

Sub test()
    Dim regex As Object 'Regexp object.
    Set regex = CreateObject("VBScript.RegExp") 'Regexp object.
    Dim strPattern As String: strPattern = "\d(AM|PM)" 'Declare regex pattern.
    Dim strReplace As String 'Placeholder string for replace operation.
    Dim target As String

    target = "1:05PM"

    strReplace = " $1"

    With regex
        .Global = True
        .IgnoreCase = False
        .Pattern = strPattern
    End With

    If regex.test(target) Then
        Debug.Print regex.Replace(target, strReplace)
    End If
End Sub

Выход:

1:0 PM

1 Ответ

0 голосов
/ 09 мая 2018

Это потому, что в вашем регулярном выражении есть не захваченный \ d. Попробуйте поставить () вокруг \d, т.е. (\d)(AM|PM).

Вам также нужно изменить strReplace на "$1 $2"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...