例如,我有这个字符串,其中电子邮件地址格式不同:
"a.b@c.d" <a.b@c.d>|"Michal pichal (michal.pichal@g.d)" <michal.pichal@g.d>|Melisko Pan <melisko.pan@domena.sk>
我需要以以下形式提取电子邮件地址:
a.b@c.d|michal.pichal@g.d|melisko.pan@domena.sk
我的想法是从群组[0-9] [A-Z] [a-z] @ .-获取@附近的任何字符,但我不知道如何。请帮忙一些提示。
答案 0 :(得分:0)
import java.util.Scanner;
class test{
public static void main(String args[]){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
String res = ""; //This holds the final result
for(int i=0; i<str.length(); ++i){ //Loop through the entire string
if(str.charAt(i)=='<'){
String build = "";
for(int j=i+1; j<str.length(); ++j){
if(str.charAt(j)=='>'){
break; //Break when we hit the '>'
}
build += str.charAt(j); //Add those between < and >
}
res += build + "|"; //Add the pipe at the end
}
continue;
}
System.out.println(res);
}
}
这应该这样做。 只需运行简单的嵌套循环。不需要正则表达式。
答案 1 :(得分:0)
此正则表达式从字符串中提取电子邮件:
public static void main(String[] args) {
Pattern pattern = Pattern.compile("[\\w.]+@[\\w.]+");
Matcher matcher = pattern.matcher("\"a.b@c.d\" <a.b@c.d>|\"Michal pichal (michal.pichal@g.d)\" <michal.pichal@g.d>|Melisko Pan <melisko.pan@domena.sk>\r\n");
while(matcher.find()){
String group = matcher.group();
System.out.println("group="+group);
}
打印:
group=a.b@c.d
group=a.b@c.d
group=michal.pichal@g.d
group=michal.pichal@g.d
group=melisko.pan@domena.sk