Java Regex动态忽略给定路径的某些部分

Java Regex动态忽略给定路径的某些部分,java,regex,Java,Regex,假设我有以下字符串,它是一个“完整路径”: 还有“简化路径”字符串: 在这种情况下,字符串的某些部分可以省略,但仍然表示完整路径。我知道这很奇怪,但我无法改变 基本上在这种情况下,我需要一个正则表达式来忽略当前路径之前的最后两条路径(动态地,因为我没有关于它们的特定信息),以确认这两个字符串具有相关性 我唯一能想到的是: 从两个字符串中获取当前路径(([^\/]+$)),并进行比较 在Java中检查完整字符串是否包含简化字符串 但我认为必须有一种更干净的方法来做到这一点。我想出了以下解决方案

假设我有以下字符串,它是一个“完整路径”:

还有“简化路径”字符串:

在这种情况下,字符串的某些部分可以省略,但仍然表示完整路径。我知道这很奇怪,但我无法改变

基本上在这种情况下,我需要一个正则表达式来忽略当前路径之前的最后两条路径(动态地,因为我没有关于它们的特定信息),以确认这两个字符串具有相关性

我唯一能想到的是:

  • 从两个字符串中获取当前路径(
    ([^\/]+$)
    ),并进行比较
  • 在Java中检查完整字符串是否包含简化字符串

但我认为必须有一种更干净的方法来做到这一点。

我想出了以下解决方案:

  • 搜索字符串:
    [^\/]+\/[^\/]+\/([^\/]+$)

  • 替换字符串:
    \1


如果两个路径都指向同一个文件/目录,则可以使用该类。 它有一个方法,您可以向该方法传递两个路径实例,它将检查两个文件是否指向目录中的同一个文件。这条简单的行将检查
A/B/E/
/A/B/C/D/E
是否实际上是同一个目录

System.out.println(Files.isSameFile(Paths.get("/A/B/C/D/E"), Paths.get("/A/B/E"))); 

它们指向同一个文件或目录吗?它是一个路径,但不是目录。我在这里用的是概念,谢谢。但请注意,我总是使用“路径”这个词,因为它确实是一条路径,但我从来没有说过“目录”,因为实际上它不是。这是一个。我没有提到这一点,因为我认为不会有什么区别,因为在这一点上我仍然有两个简单的字符串。我的问题是,出于某种复杂的原因,
/A/B/E
实际上指的是
/A/B/C/D/E
,我必须知道这一点。仍然给你一个+1作为你的尝试:)太好了!我理解它在这里做什么,但你能解释一下它是如何做的吗?当然,我们正在搜索3个部分,并用/分隔它们,为了做到这一点,我们搜索除分隔符之外的每个字符,然后只捕获最后一个,并用最后一个部分替换整个找到的序列。
/A/B/E
System.out.println(Files.isSameFile(Paths.get("/A/B/C/D/E"), Paths.get("/A/B/E")));