如何模式匹配未知数量的字符

How to Pattern Match an Unknown Number of Characters

首先,我对编程不是很精通。我有一些宏可以帮助我完成工作,但我需要清晰的示例来制作这些宏。

我想在 Word 文档中找到任何具有多个下划线的实例,并将它们替换为一组下划线。连续可能有 30 到 5 个下划线,我希望能够找到这些并用恰好 10 个下划线替换它们。下划线最常出现在它们自己的段落中,但有时它们会与文本一起出现。

我在 和网上都看过了,但我不知道如何使用未知数量的下划线。

如果有人能指出正确的方向,我将不胜感激。谢谢

你可以

1) 将所有 "double" 下划线替换为 "single" 直到只有 "single" 下划线

2) 将所有 "single" 下划线替换为“_____”

With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting

    Do
        .Text = "__"
        .Replacement.Text = "_"
        .Wrap = wdFindContinue
        .Format = False
        .MatchWholeWord = False

        .Execute Replace:=wdReplaceAll
    Loop While .Found

    .Text = "_"
    .Replacement.Text = "_____"
    .Wrap = wdFindContinue
    .Format = False
    .MatchWholeWord = False

    .Execute Replace:=wdReplaceAll

End With

Selection 更改为您要处理的文档的实际部分(例如 ActiveDocument.Content 所有文档

你需要做的就是使用通配符!

一行代码就可以搞定:

ActiveDocument.Content.Find.Execute "_{5,30}", _
    MatchWildcards:=True, Replace:=wdReplaceAll, _
    ReplaceWith:="__________", Wrap:=wdFindContinue

注:

{5,30} 部分将保留小于 5 或​​大于 30 的下划线。

您可以将其更改为{,30}以替换30个或更少的下划线

{1,}替换1个或多个下划线

可以找到有关通配符的易于理解的文章 here