在Excel VBA中很难找到正确的正则表达式模式。
给出以下示例:
“汤姆(Tom)在汤姆(Tom)生日那天穿了一件短的红衬衫。您可能已经猜到汤姆(Tom)的生日是相同的。”
我想匹配所有Tom和任意数量的字符,直到单词border。因此,在示例中,Tom,Tom's和Toms将匹配。然后,我需要从单词后的空格中删除它们,所以当我完成操作后,字符串看起来像这样。
生日那天穿了一件短的红色衬衫。您可能已经猜到生日是相同的。
这可以用一种模式完成吗?
这是我的示例代码。我尝试了几种组合,但都没有成功。
Sub test()
Dim re As Object
Set re = CreateObject("VBScript.RegExp")
re.Global = True
re.IgnoreCase = True
sample = "Tom wore a short red shirt on Tom's birthday. As you might have guessed the Toms have the same birthday."
Debug.Print (sample)
're.Pattern = "Tom[a-zA-Z'-]+\b"
re.Pattern = "Tom+\b"
x = re.Replace(sample, "")
Debug.Print (x)
End Sub
答案 0 :(得分:1)
您可能要使用此模式:
Tom\S*\b
这将匹配Tom
,后跟任意数量的非空格字符(零个或多个),并以单词边界结尾。
re.Pattern = "Tom\S*\b"
x = re.Replace(sample, "")
Debug.Print(x)
答案 1 :(得分:0)
您尝试过吗:
x = Replace(sample, re.Pattern, "")
祝你好运。