settingsAccountsettings
Menusettings

Q: Extract Emails in Java

+7 votes

Write a program to extract all email addresses from given text. The text comes at the first input line. Print the emails in the output, each at a separate line. Emails are considered to be in format <user>@<host>, where:

  • <user> is a sequence of letters and digits, where '.', '-' and '_' can appear between them. Examples of valid users: "stephan", "mike03", "s.johnson", "st_steward", "softuni-bulgaria", "12345". Examples of invalid users: ''--123", ".....", "nakov_-", "_steve", ".info".
  • <host> is a sequence of at least two words, separated by dots '.'. Each word is sequence of letters and can have hyphens '-' between the letters. Examples of hosts: "softuni.bg", "software-university.com", "intoprogramming.info", "mail.softuni.org". Examples of invalid hosts: "helloworld", ".unknown.soft.", "invalid-host-", "invalid-".
  • Example of valid emails: info@softuni-bulgaria.org, kiki@hotmail.co.uk, no-reply@github.com, s.peterson@mail.uu.net, info-bg@software-university.software.academy.

Examples:

how to extract emails in java

asked in Java category by user eiorgert
edited by user golearnweb

1 Answer

+1 vote
 
Best answer

You can use regular expressions - REGEX to find the e-mails + Pattern and Matcher

Read more about them HERE: http://www.tutorialspoint.com/java/java_regular_expressions.htm

Here's my solution:

import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Pr_01_ExtractEmails {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();

        Pattern pattern = Pattern.compile("([a-z0-9_.-]+)@([a-z0-9_.-]+[a-z])");
        Matcher matcher = pattern.matcher(input);

        while(matcher.find()){
            System.out.println(matcher.group());
        }
    }
}

 

answered by user hues
selected by user golearnweb
...