Java RESTEasy Web方法@Path中的正则表达式

Java RESTEasy Web方法@Path中的正则表达式,java,regex,rest,resteasy,Java,Regex,Rest,Resteasy,我需要在RESTEasy web方法的@Path语句中添加一个正则表达式,以允许以下两种类型的URL连接到web方法: 。。。其中id='r2lXIcBfNfnp2yOK',版本可以是'1'或'1.0.0'。我该怎么做 到目前为止,我的方法接受的版本为“1.0.0”,但不是“1”: @GET() @Produces("application/x-protobuf") @Path("/Things/{id}.{version: (([0-9\\*]+\\.[0-9\\*]+\\

我需要在RESTEasy web方法的
@Path
语句中添加一个正则表达式,以允许以下两种类型的URL连接到web方法:

。。。其中id='r2lXIcBfNfnp2yOK',版本可以是'1'或'1.0.0'。我该怎么做

到目前为止,我的方法接受的版本为“1.0.0”,但不是“1”:

 @GET() 
 @Produces("application/x-protobuf") 
 @Path("/Things/{id}.{version:
 (([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}")
    public String getThing( 
       @PathParam("id") String id, 
    @PathParam("version") @DefaultValue("1.0.0") String version, 
    @Context final HttpServletResponse response) 
{       
       //.... (rest of the method, irrelevant
}
我可以添加到上面的@Path语句中的另一个正则表达式是什么,以允许将“1”作为一个版本

我试过这个:

@Path("/{id}.{version: (([0-9\\*^\\.])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
。。。但这不起作用

我也试过:

@Path("/{id}.{version: (([0-9\\*])|([0-9\\*]+\\.[0-9\\*]+\\.[0-9\\*]+))}
。。。但当我传入一个版本“1.0.0”时,它只是切断了第一个数字,所以它变成了“0.0”

提前感谢您的帮助。

使用
\\d+((\\.\\d+{2})
允许

\\d+
允许一个或多个数字

(\\.\\d+{2}
允许a的模式。后跟一个或多个数字,出现两次

下面的
使第二个模式成为可选模式

使用
\\d+(\\\.\\d+{2})
来允许

\\d+
允许一个或多个数字

(\\.\\d+{2}
允许a的模式。后跟一个或多个数字,出现两次


下面的
使第二种模式成为可选模式

这是唯一允许的两种模式?是。。或者只针对版本。试试这个:(([0-9]*+\){2}+([0-9]{1}));([0-9]{1})在大括号{}中使用数字的想法是正确的,但是对于我在@Path中使用的格式,非字母数字字符需要用“\\”而不是“\”转义。一件小事。这是唯一允许的两件事?是的。。或者只针对版本。试试这个:(([0-9]*+\){2}+([0-9]{1}));([0-9]{1})在大括号{}中使用数字的想法是正确的,但是对于我在@Path中使用的格式,非字母数字字符需要用“\\”而不是“\”转义。一件小事,谢谢!这正是我想要的。谢谢!这正是我想要的。