Я собираюсь разбить это на две операции, так как я не могу понять регулярное выражение, чтобы сделать это за одну. Тем не менее, я подумал, что попрошу мозговой трест посмотреть, сможет ли кто-нибудь это сделать (а я уверен, что кто-то может).
По сути, у меня есть строка, содержащая поле получателей из электронной почты в Exchange. Я хочу разобрать его на отдельных получателей. Мне не нужно проверять электронную почту или что-то в этом роде. По сути, данные разделены запятыми, за исключением случаев, когда запятая находится между набором кавычек. Это та часть, которая меня смущает.
Сейчас я использую: (?"[^"\r\n]*")
Что дает мне имена в кавычках и ([a-zA-Z0-9_-.]+)@(([[0-9]{1,3}.[0-9]{1,3} .[0-9]{1,3}.)|(([a-zA-Z0-9-]+.)+))([a-zA-Z]{2,4}|[0-9 ]{1,3})
который дает мне адреса электронной почты
Вот что у меня есть. Данные:
"George Washington" <[email protected]>, "Abraham Lincoln" <[email protected]>, "Carter, Jimmy" <[email protected]>, "Nixon, Richard M." <[email protected]>
Что я хотел бы получить обратно, так это:
"George Washington" <[email protected]>
"Abraham Lincoln" <[email protected]>
"Carter, Jimmy" <[email protected]>
"Nixon, Richard M." <[email protected]>