简体   繁体   English

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

[英]MS Word VBA macro to search and replace (Regex)

Suppose a word file contains 假设一个单词文件包含

ab{cdefg{hij{k

And I want { to be moved one place to the right like 我希望{像

abc{defgh{ijk{

I need to make an array with all characters then run a loop with Regex search and replace 我需要创建一个包含所有字符的数组,然后使用Regex搜索运行循环并替换

search: 搜索:

({)(array[index])

replace: 更换:

$2$1

Plain Regex without loop won't work because I'm dealing with Indic text which have complex characters. 没有循环的普通正则表达式将无法正常工作,因为我正在处理具有复杂字符的印度文字。 I've done this on JavaScript and ExtendScript in inDesign, but I've no clue about VB. 我已经在inDesign中的JavaScript和ExtendScript上完成了此操作,但对VB却一无所知。 Can anyone please help? 谁能帮忙吗?

This can be done using a Word wildcard search-and-replace: 这可以使用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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM