public static void fillEmailsHashSet(String line,HashSet<String> container){
Pattern p = Pattern.compile("([\\w\\-]([\\.\\w])+[\\w]+@([\\w\\-]+\\.)+[A-Za-z]{2,4})");
Matcher m = p.matcher(line);
while(m.find()) {
container.add(m.group(1));
}
}
You can find an example of reading a file here: https://stackoverflow.com/a/22074145/3315914
EDIT:
Example with input/output:
public static void emails() {
HashSet<String> hs = new HashSet<>();
FileReader file = null;
try {
file = new FileReader(new File("emails.txt"));
} catch (FileNotFoundException e1) {
System.err.println("File emails.txt not found!");
e1.printStackTrace();
}
BufferedReader br = new BufferedReader(file);
String line;
try {
while ((line = br.readLine()) != null) {
fillEmailsHashSet(line, hs);
}
} catch (IOException e) {
System.err.println("Error when reading");
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
System.err.println("Unexpected error");
e.printStackTrace();
}
}
}
for (String string : hs) {
System.out.println(string);
}
}
EDIT (2): A more compact way would be using try-with-resources
public static void emails() throws IOException {
HashSet<String> hs = new HashSet<>();
FileReader file = null;
try (BufferedReader br = new BufferedReader(new FileReader(new File("emails.txt")))) {
String line;
while ((line = br.readLine()) != null) {
fillEmailsHashSet(line, hs);
}
for (String string : hs) {
System.out.println(string);
}
}
}
Input file contents:
dolor ac egestas purus TheBumpy@whatever.com Vestibulum justo. magna vulputate Morbi TheBlue@whatever.com
TheJudicious@whatever.com Nulla nec dui. adipiscing in TheOpen@whatever.com TheFascinated@whatever.com
sapien urna mi TheHarmonious@whatever.com vitae aliquam In eget Pellentesque ThePhysical@whatever.com tellus.
non sollicitudin faucibus et mi justo, sit nibh dapibus potenti. venenatis venenatis, molestie sed Proin fermentum elementum.
Sed ut velit venenatis TheDidactic@whatever.com dignissim
consequat condimentum, porttitor Lorem nibh felis,
ullamcorper eros. ut diam vel ipsum nisi luctus. ultrices sem amet non Aliquam aliquet lobortis mauris Vestibulum est purus dignissim
Etiam Cras in eget, Sed pellentesque, ThePhobic@whatever.com eu amet,
Mauris magna euismod, odio semper lorem, potenti. dui tellus.
TheDetailed@whatever.com Ut ipsum mi non Suspendisse tempus cursus ac nec TheMiniature@whatever.com semper. ac, quis suscipit posuere,
posuere Suspendisse Donec tristique a sagittis vel vitae urna Aliquam vehicula sit condimentum. mi risus mollis rutrum varius. nec elit.
nulla Fusce TheKaput@whatever.com sagittis dictum nunc, eget in TheAmusedGamer@gmail.com venenatis consectetur ultricies. interdum fermentum.
ante TheJolly@whatever.com eros quam. nec TheElectric@whatever.com blandit. massa. molestie ac, TheHistorical@whatever.com purus, ligula fringilla
imperdiet lorem neque. et blandit tortor. enim sed, magna.
Output:
ThePhysical@whatever.com
TheHistorical@whatever.com
TheAmusedGamer@gmail.com
TheBlue@whatever.com
TheKaput@whatever.com
TheMiniature@whatever.com
TheFascinated@whatever.com
ThePhobic@whatever.com
TheBumpy@whatever.com
TheDetailed@whatever.com
TheHarmonious@whatever.com
TheJudicious@whatever.com
TheElectric@whatever.com
TheJolly@whatever.com
TheOpen@whatever.com
TheDidactic@whatever.com
EDIT:
If you want it in the form of array:
String[] array=hs.toArray(new String[hs.size()]);