【问题标题】:How do you write this regex in VBA word?你如何用 VBA 字写这个正则表达式?
【发布时间】:2017-12-22 01:27:28
【问题描述】:

我正在尝试在 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: 和 [ 之间有 2 个空格,Replace: 和 [ 之间有 1 个空格,但它用 'hey [0-9]' 替换了字符串:'hey 8'。

【问题讨论】:

  • 注意:您链接的文档是.Net文档,与VBA无关。
  • 您链接的文档与 VBA 完全无关。 VBA 不是 VB.Net 或 VB 或 VBScript。仅仅因为它们都以 VB 开头并不意味着它们都是相同的,就像 cat 和 car 和 carrot 一样相同,因为它们以 ca 开头。见word.mvps.org/FAQs/General/UsingWildcards.htm

标签: vba ms-word


【解决方案1】:

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

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

替换:Space\1(单个空格和\1)

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

如果您不确定文本前可以有多少个空格,您可以使用Space{1,},它告诉 word 查找任意数量的Spaces。

【讨论】:

  • 谢谢,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-06
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多