MS Word VBA宏搜索和替换(正则表达式)

时间:2015-12-03 06:35:34

标签: regex vba ms-word

假设一个word文件包含

ab{cdefg{hij{k

我想{被移动到右边的一个地方,如

abc{defgh{ijk{

我需要创建一个包含所有字符的数组,然后运行带有Regex搜索的循环并替换

搜索:

({)(array[index])

取代:

$2$1

没有循环的普通正则表达式不起作用,因为我正在处理具有复杂字符的印度文本。我在inDesign中使用JavaScript和ExtendScript完成了这个,但我对VB没有任何线索。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

这可以使用Word通配符搜索和替换来完成:

With ActiveDocument.Range.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .ClearAllFuzzyOptions
    .Text = "(\{)(?)"           ' find opening brace followed by a single character
    .Replacement.Text = "\2\1"  ' swap positions
    .Forward = True
    .Wrap = wdFindContinue
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchFuzzy = False
    .MatchWildcards = True
End With
ActiveDocument.Range.Find.Execute Replace:=wdReplaceAll