Java RESTEasy Web方法@Path中的正则表达式
我需要在RESTEasy web方法的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\\*]+\\
@Path
语句中添加一个正则表达式,以允许以下两种类型的URL连接到web方法:
@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中使用的格式,非字母数字字符需要用“\\”而不是“\”转义。一件小事,谢谢!这正是我想要的。谢谢!这正是我想要的。