Во-первых, вы должны использовать File, а не RegEx, так как он может разрешить все псевдонимы, такие как '~
' или '.
' или '..
'.
String aFileName = "...";
File aAbsFile = (new File(aFileName)).getAbsolutePath(); // Resolve Alias here
File aAbsHome = (new File(aHomeDir)) .getAbsolutePath(); // Resolve Alias here
boolean aIsImmediet = aFile.getParent().getCanonicalPath().equals(aAbsHome.getCanonicalPath());
Во-вторых, если вы уверены, что псевдоним отсутствует, вы можете также вычесть и удержать.
String aFileName = "...";
boolean aIsImmedient = aFileName.substring(aHomeDir.length).contain('/');
Причина, по которой я предлагаю эти два, потому что они быстрее, чем RegEx.
Если вы все еще хотите использовать RegEx, используйте '"homeDir/([^/]+)/([^/]+)"
', и вы будете печатать:
System.out.print("Total : %s; First: %s; Last: %s"
m.group(0), // All match
m.group(1), // First '(..)'
m.group(2) // Second '(..)'
);
Вы используете '/' наедине с '(...)' и '?', Используете '[^ /]' (не / /), потому что вы хотите, чтобы он был там, чтобы доказать соответствие только одного ' / 'и не более.
Надеюсь, это поможет.