Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 查找并突出显示Word文档中的非拉丁代码页字符_Regex_Vba_Ms Word - Fatal编程技术网

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