1

我需要在@Path我的 RESTEasy web 方法的语句中添加一个正则表达式,以允许以下两种类型的 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”。

在此先感谢您的帮助。

4

1 回答 1

1

用于\\d+((\\.\\d+){2})?允许<number><number>.<number>.<number>

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

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

以下?使第二个模式可选

于 2013-10-30T07:21:05.260 回答