Как определить, содержит ли переменная указанную строку, используя RegEx - PullRequest
0 голосов
/ 08 мая 2018

Как я могу написать условие, которое будет сравнивать 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 голосов
/ 08 мая 2018

Вы все еще не уточнили точно , какое условие вы хотите использовать для сопоставления, поэтому я приложу все усилия:

  • Если вы просто хотите проверить, заканчивается ли строка на «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.
    

    Попробуйте онлайн .

Надеюсь, это поможет.

...