Mam dwa wyrażenia regularne, jeden wyciąga nazwy użytkownika z łańcucha csv, a drugi wyciąga e-maile.Scalanie dwóch wyrażeń regularnych
Format łańcuch jest tak:
String s = "name lastname (username) <[email protected]>; name lastname (username) <[email protected]>; name lastname (username) <[email protected]>";
kod dla moich wyrażeń regularnych są takie.
Pattern pattern = Pattern.compile("(?<=\\()[^\\)]+");
Matcher matcher = pattern.matcher(s);
Pattern pattern2 = Pattern.compile("((?<=<)[^>]+)");
Matcher matcher2 = pattern2.matcher(s);
while (matcher.find() && matcher2.find()) {
System.out.println(matcher.group() + " " + matcher2.group());
}
Znalazłem kilka qeustions o łączących regexes, ale z odpowiedzi nie były w stanie dowiedzieć się, jak połączyć moje.
moje wydruki pokazać:
"username [email protected]"
byłbym w stanie wydrukowanie tego samego ze pojedynczego dopasowującego, za pomocą jednego wyrażenia regularnego?
obs: To jest zadanie szkolne, co oznacza, że nie "potrzebuję" ich scalania lub wykonywania, ale chciałbym wiedzieć, czy jest to możliwe i jak trudne będzie to.
Zgaduję, że OP chce AND REVOXPERS, a NIE LUB je –
@AdamDyga Nie chce zarówno nazwy użytkownika, jak i adresu e-mail z pojedynczego wyrażenia regularnego .. Zobacz: - "czy mógłbym wydrukować to samo z pojedynczego edytora, używając jeden regex? ' –
jest mała różnica, kod OPs (' (matcher.find() && matcher2.find()) 'wymaga, aby zarówno nazwa użytkownika, jak i mail były w ciągu znaków, aby mogły zostać wydrukowane. –