为什么这个正则表达式模式匹配不起作用
Why this regex pattern matching does not work
我正在使用 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
测试该方法时,它 returns 为空。为什么我的模式匹配错了?
我让这个工作:(\w+?)(:|<|>)[a-zA-Z0-9\-]*,
我用这个来弄明白:https://regex101.com/r/fOEzd9/1
我认为主要问题是数字使 \w 不能作为单词匹配。您还需要考虑破折号。
我有同样的问题,我用这个字符串解决了:
"(\w+?)(:|<|>)(\w+?),"
我正在使用 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
测试该方法时,它 returns 为空。为什么我的模式匹配错了?
我让这个工作:(\w+?)(:|<|>)[a-zA-Z0-9\-]*,
我用这个来弄明白:https://regex101.com/r/fOEzd9/1
我认为主要问题是数字使 \w 不能作为单词匹配。您还需要考虑破折号。
我有同样的问题,我用这个字符串解决了:
"(\w+?)(:|<|>)(\w+?),"