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