Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将带有参数的url与带有占位符的url匹配_Java_Regex_Url - Fatal编程技术网

Java 将带有参数的url与带有占位符的url匹配

Java 将带有参数的url与带有占位符的url匹配,java,regex,url,Java,Regex,Url,我正在存储包含参数占位符的URL模式:{param},以标识在何处插入参数。但是,如果我使用占位符模式存储URL并传递包含参数的URL,我不知道如何使用占位符标识原始URL。我将带有占位符的URL放在地图中,因此如果我查询地图时使用的URL与存储的URL相同,只是占位符已填充,则找不到该URL 例如,在地图中: testurl/{param1}/{param2} testurl/1/2 然后我想检查以下URL是否在地图中: testurl/{param1}/{param2} testurl

我正在存储包含参数占位符的URL模式:
{param}
,以标识在何处插入参数。但是,如果我使用占位符模式存储URL并传递包含参数的URL,我不知道如何使用占位符标识原始URL。我将带有占位符的URL放在地图中,因此如果我查询地图时使用的URL与存储的URL相同,只是占位符已填充,则找不到该URL

例如,在地图中:

testurl/{param1}/{param2}
testurl/1/2
然后我想检查以下URL是否在地图中:

testurl/{param1}/{param2}
testurl/1/2

它应该会发现,因为模式是唯一的,但是我刚刚填写了参数。。我是否可以通过正则表达式或其他方法实现这一点?我不介意遍历映射中的所有URL并进行比较,但我不知道如何比较它们

您的参数值可以是任何不包含斜杠(
/
)的字符串,因此正则表达式应该是:

testurl/([^/]*)/([^/]*)
这将捕获您的两个参数

它允许值为空。如果不需要,请将
*
更改为
+


如果参数必须是整数,则更改为
testurl/(\d+)/(\d+)
。(请记住在插入Java字符串时使用双反斜杠(
\

我知道已经太晚了,但仅供将来参考。您可以使用这个模板。比如说

UriTemplate uriTemplate = new UriTemplate(url);
if(uriTemplate.matches(other.url)){
   //match
}

上面只是一个例子,可能有这样的东西:testurl/branch/{param1}/{param2}/branch等等。每个url都没有特定的顺序,它是一个url,参数可以在任何地方,只要它是一个有效的url。这就是为什么我为您提供了可选的参数版本,所需的参数版本,和整数版本。您可以为每个参数选择要使用的正则表达式,或者使用适合所讨论参数的任何其他正则表达式。