Regex没有使用版本号正确分解文件路径

FK8*_*K82 2 java regex file version path

我正在使用正则表达式模式来分解servlet的上下文路径.

/{1,2}([^/{1,2}]+)
Run Code Online (Sandbox Code Playgroud)

这适用于简单的路径,如/User/folder1/folder2/folder3/.

然而,在更真实的场景中,如果其中一个文件夹名称包含虚线版本号,则似乎存在问题,例如:/User/username/Library/Tomcat/apache-tomcat-6.0.24.

在这种情况下Matcher.group(1)将返回apache-tomcat-6.0.而不是apache-tomcat-6.0.24.我不知道为什么会这样; 我相信不应该.

任何见解?

编辑

这有效:

/{1,2}([^/]+)
Run Code Online (Sandbox Code Playgroud)

Phi*_*ipp 5

[^/{1,2}]意思是"每个字符除/,{,1,,,2}",所以224没有得到匹配(它会随着像路径一样a/2,是无关的版本号).在内部[…],大多数字符都按字面解释,而构造如{1,2}不起作用.我认为如果你只是简单地说它应该有效[^/]+.我不知道你为什么要匹配两个连续的斜杠 - 只需匹配一个斜杠并过滤掉空目录名称.