我是VBA的新手,我正在尝试查找一个函数,该函数为一列中的每个单元格删除正则表达式后面的两个字符串。
在RegEx之下
[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]下面是我写的一些代码
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示例输入
2017-02-14 19:30 John Smith输出
2017-02-14 19:30John Smith被删除或替换为"“
我想删除John Smith,但不知道怎么做。有什么想法吗?
发布于 2020-06-05 16:30:35
我不熟悉VBA正则表达式的特性。但是,如果要匹配包含附加名字和姓氏的字符串的日期和时间字符串,则适当的正则表达式可能为
^(\d{4}-\d{2}-\d{2} \d{2}:\d{2}) \w+ \w+$如您所见,我将日期和时间匹配项放入括号中,这使它们成为一组。如果您将一个字符串与此匹配,然后从解析的正则表达式中选择(第一个也是唯一一个)组,您将获得日期和时间。
您还可以使用在线服务(如https://regex101.com/ )针对正则表达式测试字符串
https://stackoverflow.com/questions/62172017
复制相似问题