Tengo dos expresiones regulares, una sacando nombres de usuario de una cadena csv, y la otra sacando correos electrónicos.fusionar dos expresiones regulares
formato de la cadena es la siguiente:
String s = "name lastname (username) <[email protected]>; name lastname (username) <[email protected]>; name lastname (username) <[email protected]>";
el código para mis expresiones regulares son así.
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());
}
he encontrado varios qeustions sobre expresiones regulares que se fusionan, pero a partir de las respuestas que no he sido capaz de averiguar cómo combinar la mía.
mis impresiones muestran:
"username [email protected]"
sería yo capaz de copia impresa del mismo de una sola matcher, utilizando una expresión regular?
obs: esta es una tarea de la escuela, lo que significa que no "necesito" combinarlas o hacer más, pero me gustaría saber si es posible y qué tan difícil sería.
Supongo que OP quiere Y expresiones regulares, no O –
@ AdamDyga No, él quiere tanto el nombre de usuario como el correo electrónico de la expresión regular ... Ver: - '¿Podría imprimir lo mismo desde un solo comparador, usando un regex? ' –
hay una pequeña diferencia, el código OPs (' (matcher.find() && matcher2.find()) 'requiere que tanto el nombre de usuario como el correo estén en la cadena para poder ser impresos. –