Expresión regular para Match “| ”
-
24-09-2019 - |
Pregunta
Hola chicos, Estoy tratando de utilizar Java
El método toma como parámetro una expresión regular para que coincidir para. Por favor alguien puede proporcionar la expresión regular que se correspondería con Gracias, yo lo agradecería muchísimo! 2 | John Doe
3 | Jane Doe
4 | Jackie Chan
|
(Una barra vertical separada por un espacio en ambos lados).
Solución
Se me ocurrió \s\|\s
la que en Java se expresa como "\\s\\|\\s"
. No sé si este es el mejor sin embargo. No necesito el hardcore nada, sólo algo que funciona, y esto parece:)
Lo siento por responder a mi propia pregunta, supongo que después de escribir que fuera que me ayudó a pensar.
Otros consejos
A continuación se muestra un fragmento de código que analiza una cadena (o todo un archivo, escáner acepta ambos), y los extractos el número y el nombre de cada línea:
String s =
"1 | Mr John Doe\n" +
"2 | Ms Jane Doe\n" +
"3 | Jackie Chan\n";
Pattern pattern = Pattern.compile("(\\d+) \\| ((\\w|\\s)+)");
Scanner scan = new Scanner(s);
while (scan.findInLine(pattern) != null) {
MatchResult match = scan.match();
// Do whatever appropriate with the results
System.out.printf("N° %d is %s %n", Integer.valueOf(match.group(1)), match.group(2));
if (scan.hasNextLine()) {
scan.nextLine();
}
}
Este fragmento de código produce el resultado siguiente:
N° 1 is Mr John Doe
N° 2 is Ms Jane Doe
N° 3 is Jackie Chan
" \| "
funcionaría, lo que necesita para escapar de las cotizaciones y la |
No se olvide de incluir el * para que coincida con la repetición de caracteres
\S*\s*\|\s*[\S\t ]*
Editado -
Se puede utilizar simplemente esto también .*\|.*
......
^[ \| ]?$