java – JAX-RS / Jersey路径参数regex用于简单字符串

我正在尝试匹配字符串v1和v2.为此,我正在尝试以下正则表达式:^ v(1 | 2)(我也尝试过$,这可能是我需要的).当我在http://www.regextester.com/测试它时,似乎工作正常.但是当我在JAX-RS路径表达式中使用它时,它不起作用.我使用的表达式如下:

@Path( “/嗒嗒/ {版本:^ V(1 | 2)} / EP”)

JAX-RS是否有任何我特有的缺失?

解决方法:

由于锚点^,您的尝试无效.引自JAX-RS specification, chapter 3.7.3(强调我的):

The function R(A) converts a URI path template annotation A into a regular expression as follows:

  1. URI encode the template, ignoring URI template variable specifications.
  2. Escape any regular expression characters in the URI template, again ignoring URI template variable specifications.
  3. Replace each URI template variable with a capturing group containing the specified regular expression or ‘([ˆ/]+?)’ if no regular expression is specified.
  4. If the resulting string ends with ‘/’ then remove the final character.
  5. Append ‘(/.*)?’ to the result.

由于每个URI模板都放在捕获组中,因此无法在其中嵌入锚点.

因此,以下内容将起作用并将匹配v1或v2:

@Path("/blah/{ver:v[12]}/ep")
上一篇:Jersey / REST – NoSuchMethodError:com.sun.jersey.core.reflection.ReflectionHelper.getContextClassL


下一篇:java – 有没有办法知道在Jersey @__Param fromString处理程序中正在解析哪个参数?