Почему это сопоставление с регулярным выражением не работает
Я реализую запрос RESTful со спецификацией JPA. Хотелось бы обрабатывать URL с несколькими критериями, которые выглядят так:
http://localhost:8080/samples?search=lastName:doe,age>25
Строка поиска будет соответствовать шаблону (\\w+?)(:|<|>)(\\w+?)
разделены по ",".
Поэтому я написал следующий код для получения Matcher из строки:
static Matcher getMatcherFromString(String str) {
Pattern pattern = Pattern.compile("(\\w+?)(:|<|>)(\\w+?),");
Matcher matcher = pattern.matcher(str + ",");
return matcher;
}
Этот метод затем вызывается в контроллере для анализа URL.
Тем не менее, когда я тестировал метод со строкой analysisId:fdebfd6e-d046-4192-8b97-ac9f65dc2009
возвращает ноль. Почему я сделал неправильно для сопоставления с образцом?
2 ответа
Я получил это на работу: (\ w +?) (: |<|>) [A-zA-Z0-9\-]*,
Я использовал это, чтобы понять это: https://regex101.com/r/fOEzd9/1
Я думаю, что главная проблема заключалась в том, что числа не совпадают как слово. Вам также необходимо учитывать тире.
У меня была та же проблема, и я решил использовать эту строку:
"(\\w+?)(:|<|>)(\\w+?),"