代码之家  ›  专栏  ›  技术社区  ›  FK82

Regex不能正确地用版本号分解文件路径

  •  2
  • FK82  · 技术社区  · 14 年前

    我使用regex模式来分解servlet的上下文路径。

    /{1,2}([^/{1,2}]+)
    

    这对于简单的路径非常有效,例如 /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}([^/]+)
    
    1 回复  |  直到 14 年前
        1
  •  5
  •   Philipp    14 年前

    [^/{1,2}] 意思是“除了 / , { , 1 , , , 2 } “,所以 2 属于 24 不匹配(与以下路径相同) a/2 […] ,大多数字符是按字面解释的 {1,2} 别工作了。我认为如果你简单地说 [^/]+ 相反。我不知道你为什么要匹配两个连续的斜杠,只要匹配一个斜杠,过滤掉空的目录名。