VBA-регулярное выражение и замена

Я очень новичок в VBA. Ниже мой код, чтобы выявить и удалить только те точки, которые появляются после даты, а не после текста. Но это, кажется, не работает.

Sub simpleRegexSearch()

    Dim strPattern As String: strPattern = "[0-9]+[.]"
    Dim strReplace As String: strReplace = "."
    Dim myreplace As Long
    Dim strInput As String
    Dim Myrange As Range

    Set regEx = CreateObject("VBScript.RegExp")
    Set Myrange = ActiveSheet.Range("A1")

    For Each cell In Myrange
        If strPattern <> "" Then
            strInput = cell.Value

            With regEx
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = strPattern
            End With

            If regEx.TEST(strInput) Then
                 Myrange.Value = (regEx.Replace(strInput, strReplace))

            End If
        End If
    Next

    Set regEx = Nothing

End Sub

пример двух строк столбца, над которым я работаю: -

08-02-18. BM sent email to Matt with IM. 15-02-18. Left voice message for Matt today.
08-02-18. BM sent email with IM. 15-2-18. BM spoke to Adam. He is looking at the IM. 16-2-18. Further discussions with Adam today. Looking to develop an office asset with Childcare.

желаемый результат-это :-

08-02-18 BM sent email to Matt with IM. 15-02-18 Left voice message for Matt today.
08-02-18 BM sent email with IM. 15-2-18 BM spoke to Adam. He is looking at the IM. 16-2-18 Further discussions with Adam today. Looking to develop an office asset with Childcare.

пожалуйста, помогите мне с исправлением в нем.

10
задан Nisse Engström
15.02.2023 14:05 Количество просмотров материала 3433
Распечатать страницу

2 ответа

есть ряд изменений, которые могут быть сделаны, чтобы улучшить свой код. Но что касается регулярного выражения, чтобы оно работало так, как вы хотите, измените шаблон и замените строки

Dim strPattern As String: strPattern = "([0-9]+)[\.]"
Dim strReplace As String: strReplace = ""

объяснение regex и строку замены

([0-9]+)\.

параметры: регистр не учитывается; ^ $ match в разрывах строк

1$

создан с RegexBuddy

2
отвечен Ron Rosenfeld 2023-02-16 21:53

[] - диапазон символов. Так strpattern = "([0-9]+)."and strReplace = "$1"..

-2
отвечен user953134 2023-02-17 00:10

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх