如何使用RegEx确定变量是否包含指定的字符串

时间:2018-05-08 14:11:44

标签: regex vba outlook-vba

我如何编写一个条件来比较Recipient.AdressEntry,例如以下字符串" I351"使用RegEx?

这是我的If条件,但是硬编码到每个已知的电子邮件地址。

For Each recip In recips
    If recip.AddressEntry = "Dov John, I351" Then
        objMsg.To = "example@mail.domain"
        objMsg.CC = recip.Address
        objMsg.Subject = Msg.Subject
        objMsg.Body = Msg.Body
        objMsg.Send
    End If
Next

我需要这种情况的原因是电子邮件可能包含我团队中的几位同事和另一位团队中的一位或多位同事。我的同事的AdressEntry以I351结束,所以我将检查这封电子邮件是否包含我的一个队友。

For Each recip In recips
    If (recip.AddressEntry = "Dov John, I351" _
          Or recip.AddressEntry = "Vod Nohj, I351") Then
        objMsg.To = "example@mail.domain"
        objMsg.CC = recip.Address
        objMsg.Subject = Msg.Subject
        objMsg.Body = Msg.Body
        objMsg.Send
    End If
Next

1 个答案:

答案 0 :(得分:0)

您仍然没有明确说明 您想要用于匹配的条件是什么,所以我会尽我所能:

  • 如果您只是想检查字符串是否以" I351"结束,您不需要正则表达式,您可以使用以下内容:

    If recip.AddressEntry Like "*I351" Then
        ' ...
    End If
    
  • 如果要检查字符串是否遵循此格式"LastName FirstName, I351",可以使用以下内容使用Regex实现此目的:

    Dim regEx As New RegExp
    regEx.Pattern = "^\w+\s\w+,\sI351$"
    If regEx.Test(recip.AddressEntry) Then
        ' ...
    End If
    

    正则表达式模式的说明:

    ' ^      Asserts position at the start of the string.
    ' \w     Matches any word character.
    ' +      Matches between one and unlimited times.
    ' \s     Matches a whitespace character.
    ' \w+    Same as above.
    ' ,      Matches the character `,` literally.
    ' \s     Matches a whitespace character.
    ' I351   Matches the string `I351` literally.
    ' $      Asserts position at the end of the string.
    

    Try it online

希望有所帮助。