Ich habe eine Zeichenfolge wieExtrahieren von Variablen aus der mathematischen Gleichung
a + (b * 6) < = Katze * 45 & & cat = Hund
Ich versuche, die Variablen zu extrahieren a, b, cat, dog
. Unten ist mein Code.
Set<String> varList = null;
StringBuilder sb = null;
String expression = "a+(b * 6) <= cat*45 && cat = dog";
if (expression!=null)
{
sb = new StringBuilder();
//list that will contain encountered words,numbers, and white space
varList = new HashSet<String>();
Pattern p = Pattern.compile("[A-Za-z\\s]");
Matcher m = p.matcher(expression);
//while matches are found
while (m.find())
{
//add words/variables found in the expression
sb.append(m.group());
}//end while
//split the expression based on white space
String [] splitExpression = sb.toString().split("\\s");
for (int i=0; i<splitExpression.length; i++)
{
varList.add(splitExpression[i]);
}
}
Iterator iter = varList.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}
Output Ich erhalte ist:
ab
cat
dog
Erforderliche Ausgabe:
a
b
cat
dog
hier der Fall ist, können die Variablen oder nicht durch Leerzeichen getrennt werden. Wenn Leerraum vorhanden ist, ist die Ausgabe gut. Aber wenn die Variablen nicht durch Leerzeichen getrennt sind, bekomme ich falsche Ausgaben. Kann mir jemand die richtige Pattern
vorschlagen?
Check: - https: // regex101 .com/r/lD2qE2/1 – rock321987
Interessante Frage :) –