Excel VBA RegEx将单词加上任何与单词边界匹配的单词

时间:2018-11-06 13:50:03

标签: regex excel vba excel-2010

在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

2 个答案:

答案 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, "")

祝你好运。