Regex 查找并突出显示Word文档中的非拉丁代码页字符
我在网上找过这个,但不幸的是没有什么乐趣。我可以找到很多查找和替换的示例,但使用Regex 查找并突出显示Word文档中的非拉丁代码页字符,regex,vba,ms-word,Regex,Vba,Ms Word,我在网上找过这个,但不幸的是没有什么乐趣。我可以找到很多查找和替换的示例,但使用regex查找和突出显示的示例不多 我想做的是在MS Word文档中查找非拉丁语代码页字符并突出显示它们。我认为最好的方法是使用regex(如果不是这样的话,可以接受建议)。以下代码显示了整个文档: Sub Highlight_Words() Dim oRE As New RegExp: oRE.Pattern = "[^a-zA-Z0-9:]" Dim oM As Match Applic
regex
查找和突出显示的示例不多
我想做的是在MS Word文档中查找非拉丁语代码页字符并突出显示它们。我认为最好的方法是使用regex
(如果不是这样的话,可以接受建议)。以下代码显示了整个文档:
Sub Highlight_Words()
Dim oRE As New RegExp: oRE.Pattern = "[^a-zA-Z0-9:]"
Dim oM As Match
Application.ScreenUpdating = False
Options.DefaultHighlightColorIndex = wdRed
With ActiveDocument.Content.Find
.ClearFormatting
.Text = oRE.Pattern
'.Text = "[^a-zA-Z0-9\s:]"
'.Text = "[a-zA-Z\d\s:]"
'.Text = " "
With .Replacement
.Text = "^&"
.ClearFormatting
.Highlight = True
End With
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True
End Sub
任何帮助都将不胜感激,谢谢
另外,我正在使用Windows 7(64位)和Word 2013
更新1:以下是示例文本: 这只是一个测试非字母数字高亮显示的示例文本 字符(即非英语字符 (即À)而不是数字)。这条规则也有例外,比如 撇号(“2”)或冒号(“:”)或连字符(“-”),但我可以添加这些 异常一旦我有了搜索非字母数字的主模式 人物
因此,从上面的示例文本中,À应该突出显示(我在文本中有其他字符,但不幸的是它们没有显示在网站上)您不能在Word文档中使用正则表达式;正则表达式只能在从文档中提取的字符串上运行(分配给字符串变量)。但文档中的位置和任何格式信息都将丢失。任何搜索都必须使用Word的内置通配符功能完成,该功能类似于正则表达式,但不相同,也不具有“强大”功能 基本上,在给定“拉丁”代码页的情况下,要求似乎是“标准”ANSI代码到ANSI 126中的任何内容。(您可以使用Word的“插入符号”(Insert/Symbol,更多符号)对话框查看字符及其代码。) 使用提供的示例文本测试,此搜索字符串工作:
[!^011-^0126]
。此搜索通过ANSI 126(小写z)搜索不在ANSI 11字符范围内(单词的新行字符)的任何内容。其他ANSI代码较高的字符可以作为文字字符附加在126
在问题代码中输入:
Sub Highlight_Words()
Dim Pattern As String
Pattern = "[!^011-^0126]"
Application.ScreenUpdating = False
Options.DefaultHighlightColorIndex = wdRed
With ActiveDocument.Content.Find
.ClearFormatting
.Text = Pattern
With .Replacement
.Text = "^&"
.ClearFormatting
.Highlight = True
End With
.Forward = True
.Wrap = wdFindContinue
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
Application.ScreenUpdating = True
End Sub