首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在VBA中删除特定数量的RegEX后的字符串?

问如何在VBA中删除特定数量的RegEX后的字符串?
EN

Stack Overflow用户
提问于 2020-06-03 19:42:57
回答 1查看 73关注 0票数 0

我是VBA的新手,我正在尝试查找一个函数,该函数为一列中的每个单元格删除正则表达式后面的两个字符串。

在RegEx之下

代码语言:javascript
复制
[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]

下面是我写的一些代码

代码语言:javascript
复制
Private Sub DeleteRegexPattern()
    Dim xRg As Range
    Dim regEx As New RegExp
    Dim strPattern As String
    Dim strInput As String
    Dim Myrange As Range

    Set Myrange = Application.InputBox("Select a range:", "PivData Hider", xTxt, , , , , 8)
    Set Myrange = Application.Intersect(Myrange, Myrange.Worksheet.UsedRange)
    If Myrange Is Nothing Then Exit Sub



    For Each C In Myrange
        KIDPattern = ("([A-Z]{1})([0-9]{5})| |(.*)@.*")
        emailPattern = "(.*)@.*"

        If KIDPattern <> "" Then
            strInput = C.Value

            With regEx
                .Global = True
                .MultiLine = True
                .IgnoreCase = False
                .Pattern = KIDPattern

            End With


            If regEx.Test(strInput) Then
              C.Value = regEx.Replace(strInput, "")

            End If
        End If
    Next
End Sub

示例输入

代码语言:javascript
复制
    2017-02-14 19:30 John Smith

输出

代码语言:javascript
复制
2017-02-14 19:30

John Smith被删除或替换为"“

我想删除John Smith,但不知道怎么做。有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-05 16:30:35

我不熟悉VBA正则表达式的特性。但是,如果要匹配包含附加名字和姓氏的字符串的日期和时间字符串,则适当的正则表达式可能为

代码语言:javascript
复制
^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}) \w+ \w+$

如您所见,我将日期和时间匹配项放入括号中,这使它们成为一组。如果您将一个字符串与此匹配,然后从解析的正则表达式中选择(第一个也是唯一一个)组,您将获得日期和时间。

您还可以使用在线服务(如https://regex101.com/ )针对正则表达式测试字符串

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62172017

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档