我在一行中有一个我希望清理的电子邮件列表。它们目前采用以下格式:
Jones, Peter <jones.h7@petstore.com>; Bradley, Charles <bradley19@petstore.com>; Frank, Hilda <frank.hl@petstore.com>;
,所需结果如下:
jones.h7@petstore.com;
bradley19@petstore.com;
frank.hl@petstore.com;
因此,电子邮件周围的名称和尖括号将被删除。
我想要一个正则表达式解决方案。我已尝试将;\s
替换为\r\n
但未获得预期结果。我是正则表达式的新手,所以我被卡住了。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以将邮件与以下正则表达式之一匹配(如果您真的坚持使用正则表达式解决方案),而不是替换除<...>
个电子邮件之外的所有内容:
<([^@<>]+@[^@<>]+)>;
电子邮件地址将位于已捕获的组1中。请参阅demo
如果您需要更换不需要的字符串,您仍可以使用
<([^@<>]+@[^@<>]+)>(;)|[^<>]+|<|>
使用$1$2
替换字符串。见demo
答案 2 :(得分:1)
你也可以试试这个正则表达式:
(?:[^<]+)<([^>]+)>(;)
并将其替换为$1$2\n
。
此处,第一组捕获电子邮件地址,第二组捕获;
。此处?:
会忽略电子邮件地址前的名称。