程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

简单字符串的 JAX-RS/Jersey 路径参数正则表达式

发布于2021-07-21 10:36     阅读(1194)     评论(0)     点赞(9)     收藏(0)


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

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

有没有我遗漏的特定于 JAX-RS 的东西?


解决方案


由于 anchor ,您的尝试不起作用^引用JAX-RS 规范第 3.7.3 章(强调我的):

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

  1. URI 对模板进行编码,忽略 URI 模板变量规范。
  2. 转义 URI 模板中的任何正则表达式字符,再次忽略 URI 模板变量规范。
  3. 将每个 URI 模板变量替换为包含指定正则表达式的捕获组,或者‘([ˆ/]+?)’如果未指定正则表达式。
  4. 如果结果字符串以 结尾,‘/’则删除最后一个字符。
  5. 附加‘(/.*)?’到结果。

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

因此,以下将起作用并将匹配v1or v2

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


所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/248099/b778da2469583fe3626b/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)