Outlook VBA中的RegEx从电子邮件正文

时间:2015-12-03 16:04:43

标签: regex vba outlook outlook-vba

我需要使用RegEx从电子邮件正文中提取文本。我使用Outlook 2010和MS VBScript 5.5正则表达式引擎。我试图提取的文字是:

MessageID                              :1079247881
InstrumentID                         :DS5431460001

到目前为止,我已经提出了:

MessageID\s*\:(\d+)\n
InstrumentID\s+\:([a-z]{2}\d+)\n

两者现在都在运作。以下是我的测试:

InstrumentID

MessageID

最终,我想突出显示一条特定的消息并运行我的代码。然后,它将从该消息中提取这两个项目并将它们放入模板供我发送。我在那方面做得很好。我只需要RegExs的帮助。

1 个答案:

答案 0 :(得分:1)

如果你想使用一个正则表达式,你可以这样做:

(?:Message|Instrument)ID\s+:(\w+)

我不熟悉VB及其正则表达式实现,但似乎你可以做这样的事情(改编并借用here)。

Function TestRegExp(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 = "(?:message|instrument)ID\s+:(\w+)"

   ' 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.



If (objRegExp.Test(myString) = True) Then

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

For Each objMatch In colMatches   ' Iterate Matches collection.
  MsgBox objMatch.SubMatches(0)
Next
End If
End Function