Java 正则表达式错误,请改用非捕获组
我有一个spring请求映射的方法,其中我为路径变量定义了regex,但是spring抛出异常当我测试这个方法时,我应该更改什么Java 正则表达式错误,请改用非捕获组,java,regex,spring,spring-mvc,spring-restcontroller,Java,Regex,Spring,Spring Mvc,Spring Restcontroller,我有一个spring请求映射的方法,其中我为路径变量定义了regex,但是spring抛出异常当我测试这个方法时,我应该更改什么 @GetMapping("/items/item/{name:[a-zA-Z]+(\\s[a-zA-Z]+)*}") public Item getItemByName(@PathVariable String name) { return itemService.getItemByName(name); } 错误: org.springframework.
@GetMapping("/items/item/{name:[a-zA-Z]+(\\s[a-zA-Z]+)*}")
public Item getItemByName(@PathVariable String name) {
return itemService.getItemByName(name);
}
错误:
org.springframework.web.util.NestedServletException:请求
处理失败;嵌套异常是
java.lang.IllegalArgumentException:中捕获组的数量
图案段[a-zA-Z]+\s[a-zA-Z]+*与
它定义的URI模板变量的数量,如果
捕获组在URI模板regex中使用。使用非捕获
而是分组
从stacktrace看来,您应该使用非捕获组 使用[a-zA-Z]+?:\\s[a-zA-Z]+*代替[a-zA-Z]+\\s[a-zA-Z]+* 如果不需要组来捕获其匹配项,则可以将此正则表达式优化为Set?:Value 更多细节