如何在RegEx中进行模式匹配?

时间:2015-03-06 16:28:56

标签: java regex

我有一个示例请求,询问来自用户界面的各种帐户ID的注册信息,如下所示。

/api/v2/account/123/enroll?at_user=id_map:1345

随着请求不断变化的唯一因素是" 123"和" 1345"。我需要查找一个完全如上所述但具有不同数值的字符串(在java Servlet中)。

例如,如果请求如下所示

/api/v2/account/444/enroll?at_user=* // should not process

/api/v2/account/654/enroll?at_user=id_map:1432 // Should process it

我在考虑RegEx,但我是RegEx的新手。如何在RegEx中进行模式匹配

3 个答案:

答案 0 :(得分:3)

你需要:

"^/api/v2/account/\\d+/enroll\\?at_user=id_map:\\d+$"

答案 1 :(得分:1)

使用\d+匹配一个或多个数字。由于?是特殊的正则表达式元字符,因此您需要按顺序对其进行转义以匹配文字?符号。

"/api/v2/account/\\d+/enroll\\?at_user=id_map:\\d+"

即,

if (string.matches("/api/v2/account/\\d+/enroll\\?at_user=id_map:\\d+"))
{ 
 // process
}
else
{
// don't process
}

答案 2 :(得分:0)

你可以用这个

if (yourString != null && 
    yourString.startsWith("/api/v2/account/654/enroll?at_user=id_map:")) {

     //do your thing
}