我正在使用JPA规范实现RESTful查询。想要使用如下所示的多个条件来处理网址:
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
测试方法时,它返回null。为什么我对模式匹配做错了?
答案 0 :(得分:2)
我得到了这个:(\ w +?)(:|&lt; |&gt;)[a-zA-Z0-9 \ - ] *,
我用它来解决这个问题:https://regex101.com/r/fOEzd9/1
我认为主要的问题是数字使得\ w不匹配。您还需要考虑破折号。
答案 1 :(得分:0)
我有同样的问题,我解决了使用这个字符串:
"(\\w+?)(:|<|>)(\\w+?),"