正则表达式动态忽略给定路径的某些部分

时间:2015-10-28 13:18:55

标签: java regex

考虑我有以下字符串,这是一个“完整路径”:

/A/B/C/D/E    

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

/A/B/E

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

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

我唯一想到的是:

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

但我认为必须有更清洁的方法来做到这一点。

2 个答案:

答案 0 :(得分:1)

我提出了以下解决方案:

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

  • 替换字符串:\1

Check it here

答案 1 :(得分:1)

如果两个路径都指向同一个文件/目录,那么您可以使用Files类。 它有一个方法Files#isSameFile,您传递两个Path实例,它将检查两个文件是否指向您目录中的同一文件。这个简单的行将检查StoryDetailsActivityA/B/E/实际上是否是同一个目录。

/A/B/C/D/E