Если вы действительно хотите использовать регулярные выражения, вы должны использовать
String patternStr = "C:\\\\Users\\\\someUser\\\\(.*+)";
^^ ^^ ^^
.
Почему?Ваш строковый литерал
"C:\\Users\\someUser\\(.*+)"
скомпилирован в
C:\Users\someUser\(.*+)
Поскольку \
также используется для экранирования в регулярных выражениях, вам придется экранировать их «дважды».*
По поводу вашего редактирования:
Возможно, вы захотите взглянуть на URI.relativize()
.Пример:
File base = new File("C:/Users/someUser");
File file = new File("C:/Users/someUser/someDir/someFile.txt");
String relativePath = base.toURI().relativize(file.toURI()).getPath();
System.out.println(relativePath); // prints "someDir/someFile.txt"
(Обратите внимание, что /
работает как разделитель файлов и на компьютерах с Windows.)
Кстати, я не знаю, что у вас под именем File.separator
в вашей системе, но если он установлен на \
, то
"C:" + Pattern.quote(File.separator) + "Users" + Pattern.quote(File.separator) +
"someUser" + Pattern.quote(File.separator) + "(.*+)";
должно дать
C:\Q\\EUsers\Q\\EsomeUser\Q\\E(.*+)