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

时间:2020-04-05 12:44:06

标签: regex vba ms-word pattern-matching

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

我想在Word文档中找到具有多个下划线的所有实例,并将其替换为设置数量的下划线。连续可以有30到5个下划线,我希望能够找到这些下划线并将其精确地替换为10个下划线。下划线通常位于其自己的段落中,但有时与文本一起出现。

我已经在site和在线环境中进行了浏览,但是看不到下划线的数量未知。

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

2 个答案:

答案 0 :(得分:0)

您可以

1)将所有“双”下划线替换为“单”下划线,直到仅持续“单”下划线

2)将所有“单个”下划线替换为“ _____”

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

答案 1 :(得分:0)

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

这一行代码可以做到:

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

注意:

{5,30}部分的下划线将少于5个或多于30个。

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

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

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

相关问题