How to parse this string to extract email addresses?

I get the list of email addresses in the servlet as a parameter from the request in the following format:

,Group 4: [abc@xyz.com,asd@dsa.com],,Group 4: [abc@xyz.com],,Group 3: [],,Group 2:
[qwe@rty.com,yui@gui.com,jih@app.com,abc@xyz.com,asd@dsa.com],,Group 1: 
[pick@pick.com,test@pick.com,test1@pick1.com],,Nirmal testGroup: [qwe@rty.com],

How can I parse all unique email addresses from this in Java?

Group names are not important. It is also not necessary that the name of the group always be like Group 1, Group 3, it can be anything containing spaces. Just need to have a list / array of all unique email addresses from the string.

+1
source share
1 answer

Use regex to highlight everything between the square brackets ( []), then split each of these commas:

String example = ",Group 4: [abc@xyz.com,asd@dsa.com],,Group 4: [abc@xyz.com],,Group 3: [],,Group 2:\n" +
                         "[qwe@rty.com,yui@gui.com,jih@app.com,abc@xyz.com,asd@dsa.com],,Group 1: \n" +
                         "[pick@pick.com,test@pick.com,test1@pick1.com],,Nirmal testGroup: [qwe@rty.com],";
Pattern pattern = Pattern.compile("\\[(.*?)\\]");
Matcher matcher = pattern.matcher(example);
while (matcher.find()) {
    for (String email : matcher.group(1).split(",")) {
        System.out.println(email);
    }
}
+2

All Articles