我正在寻找在java中执行以下操作的最佳实践方法(可能使用apache commons,一些spring实用程序,或者只是简单的java / regex):
我需要检查给定的URL模式是否等于给定的字符串或者是字符串的子目录:
String pattern = "/myPath";
if(StringUtils.startsWithIgnoreCase(url, pattern) { // }
以上(使用公共方法)适用于以下网址:"../../myPath"
,"../../myPath/"
,"../../myPath/1/2"
问题是它也匹配:"../../myPathABC"
。这不是所希望的行为,因为它不是同一目录或子目录。
答案 0 :(得分:2)
答案 1 :(得分:0)
如果你想使用正则表达式,我会使用以下正则表达式进行正则表达式匹配:
/^(\.\.\/)*myPath(\/|\/.*|$)/
它返回true:
myPath
../../myPath
../../myPath/
../myPath
myPath/
并将为以下任何变体返回false:
myPathABC
或任何不是myPath
的内容。可能有一种方法可以用java命令来实现,java有一个库用于所有东西,我很遗憾不知道它。
哦,它会不为/myPath/
工作但是我不确定你是否想要那个(你没有说明),如果你想要匹配的话,在\/?
之前添加myPath
。