Я пишу выражение регулярного выражения для соответствия адресам электронной почты, но только если определенный префикс отсутствует перед электронным письмом.(Похоже, это применимо к любому не-литеральному сопоставителю строк после отрицательного lookbehind.)
Я пытался использовать отрицательный lookbehind, но только успешно удалось не сопоставить первый символ адреса электронной почты, если присутствует префикс.
(?<!From: )([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+)
Прежде всего, не обращайте внимания на совпадение адресов электронной почты, оно грубое, но работает в моем случае использования, и этот вопрос может относиться к любому не-буквальному строковому -matcher, заменяя группу захвата.с литералами работает как задумано.
То, что я хотел, чтобы это соответствовало, это адреса электронной почты, если префикс "From: "
отсутствует перед ним.
Это не должно совпадать с адресом
18.4.2019 9:35:02.115(22)->:From: address@subdomain.domain.tld
Это должно совпадать с адресом
RCPT TO:<address@domain.tld>
То, что я пробовал, делает правильное совпадение с адресами электронной почты без префикса, но в случае префикса это тоже совпадает с ними, кромепервая буква, которая, видимо, единственная, которая соответствует отрицательному взгляду сзади.Это имеет смысл.
Есть ли способ заставить отрицательный взгляд позади применить ко всей группе захвата?Или к этому следует подходить с другим выражением?