查找包含MS字中单词的段落

时间:2013-10-03 02:22:58

标签: regex ms-word

我想找到并可能突出显示.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}都会突出显示很多段落,而不只是一段。

我在这里做错了什么?

3 个答案:

答案 0 :(得分:2)

我一直在寻找相同的解决方案,并认为我会分享对我有用的东西。进入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

答案 1 :(得分:0)

你必须一步到位吗?我会这样做:1)找到这个词。 2)选择段落。 3)突出显示文字。 4)根据需要重复。 (使用简单的宏。)

答案 2 :(得分:0)

你需要5"正则表达式"搜索以查找正常 paragraphes中的所有可能事件。

  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})
    
  6. 根据documentation,案例1-3可能有效:

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

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