Estoy tratando de analizar un archivo txt que representa una gramática que se utilizará en un analizador de bajadas recursivo. El archivo de texto sería algo como esto:Java String split no devuelve los valores correctos
SPRIME :: = Expr EF
Expr :: = Plazo Expr '
Expr' :: = + Plazo Expr' | - Término Expr '| e
para aislar el lado izquierdo y dividir el lado derecho en reglas de producción independiente, tomo cada línea y llamo:
String[] firstSplit = line.split("::=");
String LHS = firstSplit[0];
String productionRules = firstSplit[1].split("|");
Sin embargo, cuando llamo el segundo método de división, no estoy de regresar una matriz de cadenas separadas por "|" carácter, pero un conjunto de cada carácter individual en el lado derecho, incluido "|". Así, por ejemplo, si yo estaba analizando el Expr 'regla e imprimí la matriz productionRules, se vería así:
"+"
"Plazo"
"Expr'"
""
"| "
Cuando lo que realmente quiero debería tener este aspecto:
- Plazo Expr'
Alguien tiene alguna idea de lo que estoy haciendo mal?
Muchas gracias, sabía que era algo que tenía que ver con las expresiones regulares, ¡funciona como un regalo ahora! –
es tradicional por aquí enviar respuestas correctas y "aceptar" la que más te guste. – Alnitak
Actualmente con 11 representantes, @Richard no puede votar aún. Pero aceptar una respuesta ciertamente sería cortés. –