首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用regex | alternation运算符查找和替换单词

使用regex | alternation运算符查找和替换单词
EN

Stack Overflow用户
提问于 2014-11-13 15:05:27
回答 2查看 11.5K关注 0票数 4

在使用正则表达式查找文本时,我在某些地方出错了。

这是我正在使用的代码。

代码语言:javascript
复制
findText = "(Event Handling|Event Handling \(EH\))"
Debug.Print findText
With Selection.Find
    .Text = findText
    .Replacement.Text = "Replaced"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .matchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute
Selection.Find.Execute Replace:=wdReplaceAll

我试图在文章中找到Event HandlingEvent Handling (EH),但or运算符不起作用。

当我尝试单独查找Event Handling时,它起作用了。Event Handling (EH)也是如此。但与OR运算符|一起,它就不起作用了。为什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-13 16:11:19

Word的内置查找功能仅支持一组有限的正则表达式。如果你想使用完整的、普通的、标准的正则表达式,你必须这样做:

代码语言:javascript
复制
Dim regExp As Object
Set regExp = CreateObject("vbscript.regexp")

With regExp
    .Pattern = "(Event Handling \(EH\)|Event Handling)"
    .Global = True
    Selection.Text = .Replace(Selection.Text, "Replaced")
End With

如果您选择您的段落并运行此命令,文本将按照您的预期进行替换。但请注意,在搜索模式交替"(Event Handling \(EH\)|Event Handling)"中,Event Handling \(EH\)应该排在第一位,因为如果Event Handling在您最初编写它时排在第一位,它将首先被替换,留下任何(EH)

或者,如果你想使用Word的内置Find,那么只需执行两次搜索--在这里,Event Handling \(EH\)应该是第一个搜索:

代码语言:javascript
复制
'Settings
With Selection.Find
    .Replacement.text = "Replaced"
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = True
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With

'First find
With Selection.Find
    .text = "Event Handling \(EH\)"
    .Execute Replace:=wdReplaceAll
End With

'Second find
With Selection.Find
    .text = "Event Handling"
    .Execute Replace:=wdReplaceAll
End With
票数 7
EN

Stack Overflow用户

发布于 2015-07-21 01:39:25

Microsoft Word的Find & Replace确实适用于各种正则表达式,但仅适用于有限的功能集。您需要单击“高级”/“更多”下拉窗格中的使用通配符选项。

这篇MVP文章记录了如何使用它:Finding and replacing characters using wildcards

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26903163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档