3

我想查找并可能突出显示 .doc 或 docx 文档中包含一个或多个关键字的所有段落。

我从这个正则表达式开始(使用带有通配符的 MS Word 查找),它只查找所有段落:

([^13^l]){1}*(^13){1}

这在我的文档中效果很好,即它从一个段落到另一个段落。然后我尝试*用一​​个可能的搜索词替换 ,*sust*如下所示:

([^13^l]){1}*sust*(^13){1}

但是,这会突出显示许多段落,直到包含*sust*. 我觉得这很奇怪,因为第一次尝试只是逐段解析文档,即使在我第二次尝试返回的部分中也是如此。

我也试过 ([^13^l]){1}(*sust*)(^13){1}了,([^13^l]){1} (*sust*) (^13){1}它们都突出了很多段落,而不仅仅是一个。

我在这里做错了什么?

4

2 回答 2

3

我一直在寻找相同的解决方案,并认为我会分享对我有用的东西。输入您的 Word 文档的 VBA 端(Alt + F11),插入一个新模块,粘贴此代码,找到引号并输入您想要的任何关键字,点击 RUN 箭头并观看它突出显示的所有段落包含该关键字。我对它对我的帮助感到非常满意!希望它也对您和其他人有所帮助!

Sub Highlight_Paragraph()

'THIS CODE HIGHLIGHTS TO THE END OF THE PARAGRAPH WHERE THE TARGET WORD
'IS FOUND WITHIN THE DOCUMENT

    Dim oRng As Range
    Set oRng = ActiveDocument.Range
    With oRng.Find
        Do While .Execute(FindText:="Contractor Shall")
            oRng.Paragraphs(1).Range.HighlightColorIndex = wdYellow
            oRng.Collapse 0
        Loop
    End With
lbl_Exit:
    Set oRng = Nothing
    Exit Sub
End Sub
于 2016-09-09T02:37:36.897 回答
0

您需要 5 次“正则表达式”搜索才能找到正常段落中所有可能出现的地方。

  1. 这会捕获每个带有关键字 段落:

    [^11-^13]{1}([!^11-^13]@sust[!^11-^13]@[^11-^13]{1})
    
  2. ...关键字是段落中的第一个单词:

    [^11-^13]{1}(sust[!^11-^13]@[^11-^13]{1})
    
  3. ...关键字是段落中的最后一个单词:

    [^11-^13]{1}([!^11-^13]@sust[^11-^13]{1})
    
  4. ...在文档的第一段中带有关键字(它将捕获更多):

    ([!^11-^13]@sust[!^11-^13]@[^11-^13]{1})
    
  5. ...关键字是文档中的第一个单词(或者只是自己检查,它也会捕获更多):

    (sust[!^11-^13]@[^11-^13]{1})
    

根据文档,对于案例 1-3 可能有效:

[^11-^13]{1}([!^11-^13]{0,}sust[!^11-^13]{0,}[^11-^13]{1})

但是(对于 Word 2010)它没有。

于 2017-04-01T04:16:33.143 回答