Почему это сопоставление с регулярным выражением не работает

Я реализую запрос 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+?),"
Другие вопросы по тегам