Java Jax-rs/Jersey正则表达式路径规则冲突

Java Jax-rs/Jersey正则表达式路径规则冲突,java,jax-rs,jersey-2.0,Java,Jax Rs,Jersey 2.0,我有一个带有Jersey注释的路径规则: @GET @Path("{format:([^/]+?)?}") 它与www.site.com/it或www.site.com匹配,这对我来说是完美的。现在,我想添加一条新规则,该规则与: www.site.com/it/search或www.site.com/search。 我试过这个: @GET @Path("{format:([^/]+?)?}/search") 但实际上第一条规则被触发了,我如何才能从第一条规则中排除一些字符串(如搜索和其他字

我有一个带有Jersey注释的路径规则:

@GET
@Path("{format:([^/]+?)?}")
它与www.site.com/it或www.site.com匹配,这对我来说是完美的。现在,我想添加一条新规则,该规则与: www.site.com/it/search或www.site.com/search。 我试过这个:

@GET
@Path("{format:([^/]+?)?}/search")
但实际上第一条规则被触发了,我如何才能从第一条规则中排除一些字符串(如搜索和其他字符串)或作为相反的解决方案,将可选路径限制为一些特定的值,如it、en、fr等。。。。
谢谢

尝试第一个端点:

@GET
@Path("/{format: \\w*}")
@GET
@Path("/{format: \\w*}/search")
对于第二个端点:

@GET
@Path("/{format: \\w*}")
@GET
@Path("/{format: \\w*}/search")

最后,我找到了这个解决方案:

实际上,您只需要为servlet映射添加新的url模式。 因此,只需在web.xml上:

<servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/api/*</url-pattern>
    <url-pattern>/v1/api/*</url-pattern>
</servlet-mapping>

JAX-RSservlet
/原料药/*
/v1/api/*

是否
www.site.com/search
您的路径参数?@CássioMazzochiMolin/search是我的路径参数将静态内容弄乱,没有图像,css加载,必须与其他路径冲突。您还可以添加语言作为查询参数。或者您可以将语言正则表达式限制为2-3个字符。我希望避免将解决方案作为查询参数。我可以温和地问您一个限制为2个字符的正则表达式的解决方案吗?我试过了,但没有成功!谢谢大家!
@Path(“/{format:^\\w{2}$}”)
只有当正好有2个字符时,才会匹配,看起来完全损坏了。甚至www.site.com/en也不起作用。如何将两个字符的限制添加到此正则表达式?{格式:([^/]+?)?}这一个实际上离工作更近了