Привет всем,
У меня небольшие затруднения при настройке регулярного выражения, которое оценивает предложение, введенное пользователем в текстовое поле, по ключевым словам. По сути, ключевые слова должны вводиться последовательно от одного к другому и могут иметь любое количество символов или пробелов до, между и после (т. Е. Если ключевыми словами являются «ворона» и «футы», то ворона должна быть где-то в приговор перед ногами. Так что с учетом этого, это утверждение должно быть действительным "бла-бла-sccui crow dsj футов"). Символы и в некоторой степени пробелы (я хотел бы, чтобы у ключевых слов был хотя бы один пробельный буфер в начале и в конце), являются полностью необязательными, основная проблема заключается в том, были ли ключевые слова введены в правильном порядке.
До сих пор мне удавалось работать с регулярным выражением в предложении, но не работало, если был введен только сам ответ.
У меня есть регулярное выражение, используемое в функции ниже:
// Comparing an answer with the right solution
protected boolean checkAnswer(String a, String s) {
boolean result = false;
//Used to determine if the solution is more than one word
String temp[] = s.split(" ");
//If only one word or letter
if(temp.length == 1)
{
if (s.length() == 1) {
// check multiple choice questions
if (a.equalsIgnoreCase(s)) result = true;
else result = false;
}
else {
// check short answer questions
if ((a.toLowerCase()).matches(".*?\\s*?" + s.toLowerCase() + "\\s*?.*?")) result = true;
else result = false;
}
}
else
{
int count = temp.length;
//Regular expression used to
String regex=".*?\\s*?";
for(int i = 0; i<count;i++)
regex+=temp[i].toLowerCase()+"\\s*?.*?";
//regex+=".*?";
System.out.println(regex);
if ((a.toLowerCase()).matches(regex)) result = true;
else result = false;
}
return result;
Любая помощь будет принята с благодарностью.
Спасибо.