【发布时间】:2016-12-20 16:22:55
【问题描述】:
我正在使用 JPA 规范实现 RESTful 查询。想要处理具有多个条件的 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 测试该方法时,它返回 null。为什么我的模式匹配做错了?
【问题讨论】:
-
我会说因为
\w不匹配- -
@Fallenhero
\w用于文字。我应该改用什么? -
我不知道你喜欢匹配什么,但也许
[0-9a-zA-Z_-]? -
或更简单(如果支持)
[\w-] -
@Fallenhero 尝试了
([a-zA-Z_-])(:|<|>)([0-9a-zA-Z_-])和([\w-])(:|<|>)([\w-])仍然无法正常工作。我认为个人模式很好。是匹配器组不起作用。
标签: regex rest jpa pattern-matching matcher