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