你如何在VBA中写这个正则表达式?

时间:2017-12-22 01:27:28

标签: vba ms-word

我正在尝试在VBA字中编写一个正则表达式,其中两个空格后跟一个数字替换为一个空格后跟一个数字。这就是我想出的,但它不起作用:

With ActiveDocument.Content.Find
    .Text = "(\s\s\d)"
    .Replacement.Text = "(\s\d)"
    .Forward = True
    .ClearFormatting
    .Replacement.ClearFormatting
    .MatchWildcards = True

End With
ActiveDocument.Content.Find.Execute Replace:=wdReplaceAll

我没有收到任何错误消息,而是在我的文档中没有出现任何影响。

官方文档位于:

https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference

更新

我尝试使用高级查找和替换,然后检查了use wild cards并将其放入

Find:  [0-9]
Replace: [0-9]

在Find:和[之间的两个空格,以及在Replace:和[之间的一个空格]中,它取代了字符串:'hey 8','hey [0-9]'。

1 个答案:

答案 0 :(得分:1)

您可以使用wildcards查找和替换:

查找:SpaceSpace([0-9])([0-9])前面的两个空格)

替换:Space\1(单一空格和\1

Regex类似,()用于wildcards中的分组。 \1表示文本中找到的第一个组,在这种情况下是一个数字。

如果您不确定文字前面的空格数量,可以使用Space{1,}告诉单词查找任意数量的Spaces