Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 类级别RequestMapping的负前瞻正则表达式_Regex_Spring_Rest_Controller_Negative Lookahead - Fatal编程技术网

Regex 类级别RequestMapping的负前瞻正则表达式

Regex 类级别RequestMapping的负前瞻正则表达式,regex,spring,rest,controller,negative-lookahead,Regex,Spring,Rest,Controller,Negative Lookahead,我正在使用Spring3.0.1并开发一些REST调用。我有一个正则表达式,我以前在方法级别使用过,它工作得很好。然而,由于设计上的改变,我决定将所有这些调用分离到一个单独的控制器中。因此,我使用相同的正则表达式在类级别配置了RequestMapping,但它似乎不起作用。在类级映射中可以匹配的正则表达式类型是否有限制?以下是两个电话: @Controller @RequestMapping("/abcd") public class ControllerClass {.... @Requ

我正在使用Spring3.0.1并开发一些REST调用。我有一个正则表达式,我以前在方法级别使用过,它工作得很好。然而,由于设计上的改变,我决定将所有这些调用分离到一个单独的控制器中。因此,我使用相同的正则表达式在类级别配置了RequestMapping,但它似乎不起作用。在类级映射中可以匹配的正则表达式类型是否有限制?以下是两个电话:

@Controller
@RequestMapping("/abcd")
public class ControllerClass 
{....
  @RequestMapping(value="/{var1}/{var2:(?!(ABC|XYZ).+/{var3}")
  public @ResponseBody SomeObject doSomething(@PathVariable("var1") String var1, @PathVariable("var2") String var2), @PathVariable("var3") String var3 {.....}
}
上面的操作很好,与任何东西都匹配,例如/abcd/random/HJGK/,但与预期的/abcd/random/ABC/不匹配

但是,以下内容的工作方式不同:

@Controller
@RequestMapping("/abcd/{var1}/{var2:(?!(ABC|XYZ).+}/")
public class ControllerClass 
{....
  @RequestMapping(value="{var3}/")
  public @ResponseBody SomeObject doSomething(@PathVariable("var1") String var1, @PathVariable("var2") String var2, @PathVariable("var3") String var3) {.....}
}

你知道这里有什么不同或错误吗?

我认为前者不起作用,因为你有一个问题。请尝试
/abcd/{var1}/{var2:(?:(?!(?:ABC|XYZ))+}/
。您好,您的解决方案似乎排除了任何版本的ABC,即即使字符串是HHDABC,也会被排除。我只希望ABC或XYZ完全被排除在外。谢谢您的帮助:)好的,那么您仍然需要将其修复为
@RequestMapping(“/abcd/{var1}/{var2:(?!(ABC | XYZ)})。+}/”
。现在行了吗?不行。出于某种原因,它似乎没有把它捡起来。在DispatcherServlet中,我一直收到未找到此HTTP请求的映射的错误。