Java 正则表达式错误,请改用非捕获组

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.

我有一个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.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

更多细节