gpt4 book ai didi

java - 使用正则表达式从字符串中提取姓名和电子邮件地址

转载 作者:行者123 更新时间:2023-11-30 07:30:23 34 4
gpt4 key购买 nike

我一直在尝试通过 Java 中的正则表达式从以下由多行组成的字符串中提取姓名和电子邮件地址:

From: Kane Smith <Kane@smith.com>
To: John Smith <john@smith.com>, Janes Smith
<jane@smith.org>, Tom Barter <tom@test.co.uk>, Other
Weird @#$@<>#^Names <other@names.me>,
Long Long Long Long Name <longlong@name.com>
Date: Tue, 25 Oct 2011 15:45:59 +0000

我试过这个正则表达式:To:\s?(([.*]+)\s*<([\w\d@\.]*)>,(\s|\n)*)+但它不起作用。

我的目的是提取每个姓名和电子邮件地址,并将每个姓名和电子邮件地址放在一起分组。然而,我所做的似乎只有在只有一个名称和地址时才有效。我的正则表达式应该是什么才能做到这一点?

最佳答案

    String s = "To: John Smith <john@smith.com>, Janes Smith\n"
+ "<jane@smith.org>, Tom Barter <tom@test.co.uk>, Other \n"
+ "Weird @#$@<>#^Names <other@names.me>, \n"
+ "Long Long Long Long Name <longlong@name.com>";
s = s.substring(3); // filter TO:
System.out.println(s);
// Use DOTALL pattern
Pattern p = Pattern.compile("(.*?)<([^>]+)>\\s*,?",Pattern.DOTALL);

Matcher m = p.matcher(s);

while(m.find()) {
// filter newline
String name = m.group(1).replaceAll("[\\n\\r]+", "");
String email = m.group(2).replaceAll("[\\n\\r]+", "");
System.out.println(name + " -> " + email);
}

关于java - 使用正则表达式从字符串中提取姓名和电子邮件地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899116/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com