Итак, я делаю шаблон и сопоставление reg ex для пользовательского ввода и использую конкатенацию для создания строки, которая будет использоваться для Pattern.compile ().Я не могу сопоставить шаблон, но когда я печатаю результат конкатенации и помещаю его в файл Pattern.com, он совпадает с шаблоном.Я пробовал разные способы объединения, но это все равно не совпадает.
for(int i = 0; i < 3; i++){
Matcher elementMatcher = element.matcher(inputArr[i]);
if(elementMatcher.matches()) inputPattern += elemString;
else if(inputArr[i].equals("+") || inputArr[i].equals("*") || inputArr[i].equals(".") || inputArr[i].equals("(")|| inputArr[i].equals(")") || inputArr[i].equals("-") || inputArr[i].equals("/")){
inputPattern += "\\\\";
inputPattern += inputArr[i];
}
else inputPattern += inputArr[i];
inputPattern += "\\\\s*";
}
if(inputPattern.equals("[a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*"))
System.out.println(inputPattern); //prints [a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*
pattern1 = Pattern.compile(inputPattern);
matcher1 = pattern1.matcher(value[j]);
if(matcher1.matches()) {
result = value[j];
System.out.println("YO");
}
Странно, это работает, когда
pattern1 = Pattern.compile("[a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*");
, но печать inputPattern выдает [a-zA-Z]+\\s*\\+\\s*[a-zA-Z]+\\s*
, а
pattern1 = Pattern.compile(inputPattern);
дает разные результаты