当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《JAX-RS/Jersey路径参数regex用于简单字符串》经验,为你挑选了1个好方法。

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

@Path("/blah/{ver:^v(1|2)}/ep")

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



1> Tunaki..:

由于锚点,您的尝试无效^.引用JAX-RS规范,第3.7.3章(强调我的):

该函数R(A)将URI路径模板注释A转换为正则表达式,如下所示:

    URI对模板进行编码,忽略URI模板变量规范.

    转义URI模板中的所有正则表达式字符,再次忽略URI模板变量规范.

    将每个URI模板变量替换为包含指定正则表达式的捕获组,或者‘([ˆ/]+?)’如果未指定正则表达式.

    如果结果字符串结束,‘/’则删除最后一个字符.

    附加‘(/.*)?’到结果.

因为每个URI模板都放在捕获组中,所以不能在其中嵌入锚点.

因此,以下内容将起作用并将匹配v1v2:

@Path("/blah/{ver:v[12]}/ep")


@ 500865不是它在一个组内(即`[]`),所以它意味着"不是/".它不是这里的锚(相同的角色,但意义不同).
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有