Я строка какИзвлечение переменных из математического уравнения
а + (Ь * 6) < = кошка * 45 & & кот = собака
Я пытаюсь извлечь переменные a, b, cat, dog
, Ниже мой код.
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());
}
Выход я получаю:
ab
cat
dog
Требуемая мощность:
a
b
cat
dog
Вот случай, переменные могут или не могут быть разделены пробелом. Когда есть пробел, выход хорош. но если переменные не разделены пробелом, я получаю неправильные выходы. Может ли кто-нибудь предложить мне Pattern
?
Проверьте: - https: // regex101 ,com/r/lD2qE2/1 – rock321987
Интересный вопрос :) –