regex - 创建正则表达式来查找带有括号首字母缩略词的句子 (VBasic Word)

标签 regex vba find ms-word

我正在编写一个脚本,该脚本可以清理文档以查找格式(美国)的首字母缩略词。作为处理工具,我需要抓取出现括号缩写词的整个句子。现在我查找缩写词的代码是:

With oRange.Find
        .Text = "\([A-Z]{2,}\)"
        .Forward = True
        .Wrap = wdFindStop
        .Format = False
        .MatchCase = True
        .MatchWildcards = True

将其与 Do While .Execute 结合起来,我可以梳理文档并找到首字母缩略词,然后使用字符串函数将首字母缩略词从括号中取出并将其放入表中。是否有一个我可以使用的正则表达式可以找到任何包含(美国)类型首字母缩略词的句子?您可以使用此段落作为输入。

非常感谢。

编辑:我找到了以下正则表达式来尝试使其工作:

.Text = "[^.]*\([A-Z]{2,}\)[^.]*\."

但这给了我一个错误,说胡萝卜不能在“查找”功能中使用。

最佳答案

我没有设法直接在 .Find 方法中使用该正则表达式,因此直接使用 Regex :

Sub AcronymFinder()
    Dim Para As Paragraph
    Set Para = ThisDocument.Paragraphs.First
    Dim ParaNext As Paragraph
    Dim oRange As Range
    Set oRange = Para.Range
    Dim regEx As New RegExp
    Dim ACrO As String

    With regEx
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .Pattern = ".*[^.]*([\(][A-Z]{2,}[\)])[^.]*[\.]"
    End With

    Do While Not Para Is Nothing
        Set ParaNext = Para.Next
        Set oRange = Para.Range
        'Debug.Print oRange.Text
        If regEx.test(oRange.Text) Then
            ACrO = CStr(regEx.Execute(oRange.Text)(0))
            'Debug.Print ACrO
            With oRange.Find
                .Text = ACrO
                .Forward = True
                .Wrap = wdFindStop
                .Format = False
                .MatchCase = True
                .MatchWildcards = False
                .Execute
            End With
        Else
        End If
        Set Para = ParaNext
    Loop
End Sub

要使用它,请记住添加引用:

Description: Microsoft VBScript Regular Expressions 5.5
FullPath: C:\windows\SysWOW64\vbscript.dll\3
Major.Minor: 5.5
Name: VBScript_RegExp_55
GUID: {3F4DACA7-160D-11D2-A8E9-00104B365C9F}

关于regex - 创建正则表达式来查找带有括号首字母缩略词的句子 (VBasic Word),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43794204/

相关文章:

python - 匹配大引号中的字符串

regex - 如何从 Linux 终端使用正则表达式删除文件夹

linux - 使用 find -exec {} + 跟踪参数

python - 如何将 VBA 输出发送到 Python 脚本?

excel - vba 变量赋值中的第二个 equals = 有何作用?

algorithm - 不确定数量的变量的 VBA 排列

javascript - Ember.js find() 不适用于参数

java - 正则表达式精确匹配 n 次出现的字母和 m 次出现的数字

regex - Laravel - 使用正则表达式仅验证字母、数字和空格

java - 需要正则表达式帮助,因使用反斜杠而受到打击