如何在单词中使用/启用(RegExp对象)使用VBA(MACRO)的正则表达式

时间:2014-08-03 06:51:01

标签: regex vba visual-studio-macros

我做了很多谷歌搜索,以获得如何在VBA中使用或开始使用正则表达式的正确答案。

最后我明白了,所以我想和你们分享我的知识。如果我错了,请纠正我。

1 个答案:

答案 0 :(得分:34)

默认情况下,在Word 2007中禁用“正则表达式”选项,以启用该步骤,执行以下步骤,

1)。转到工具>参考文献如下所示。    enter image description here

2)。现在勾选一下#34; Microsoft VBScript Regular Expressions 5.5"选项然后按哦,如下所示。 enter image description here

3)。现在,您可以在VBA脚本中创建一个RegExp对象。您可以验证它是否在对象数据库中搜索,如下所述。 查看>对象浏览器(或按F2),如下所示。

enter image description here

并搜索RegExp对象

enter image description here

4)。 RegExp 对象使用正则表达式来匹配模式。 RegExp 提供以下属性。这些属性设置模式以比较传递给 RegExp 实例的字符串:

a。 模式:定义正则表达式的字符串。

b。 IgnoreCase:一个布尔属性,指示您是否必须针对字符串中的所有可能匹配项测试正则表达式。

c。 全局:设置布尔值或返回一个布尔值,该值指示模式是否必须匹配整体中的所有匹配项搜索字符串,或者模式是否必须仅匹配第一个匹配项。

RegExp 提供以下方法来确定字符串是否与正则表达式的特定模式匹配:

d。 测试:返回一个布尔值,指示正则表达式是否可以成功匹配字符串。

e。 执行:返回一个MatchCollection对象,该对象包含每个成功匹配的Match对象。

请在Microsoft msdn论坛中找到RexExp的一个明喻示例。

Function TestRegExp(myPattern As String, myString As String)
   'Create objects.
   Dim objRegExp As RegExp
   Dim objMatch As Match
   Dim colMatches   As MatchCollection
   Dim RetStr As String

   ' Create a regular expression object.
   Set objRegExp = New RegExp

   'Set the pattern by using the Pattern property.
   objRegExp.Pattern = myPattern

   ' Set Case Insensitivity.
   objRegExp.IgnoreCase = True

   'Set global applicability.
   objRegExp.Global = True

   'Test whether the String can be compared.
   If (objRegExp.Test(myString) = True) Then

   'Get the matches.
    Set colMatches = objRegExp.Execute(myString)   ' Execute search.

    For Each objMatch In colMatches   ' Iterate Matches collection.
      RetStr = RetStr & "Match found at position "
      RetStr = RetStr & objMatch.FirstIndex & ". Match Value is '"
      RetStr = RetStr & objMatch.Value & "'." & vbCrLf
    Next
   Else
    RetStr = "String Matching Failed"
   End If
   TestRegExp = RetStr
End Function

我希望它对某些人来说可能有所帮助,因为我浪费了将近半天的时间。

由于