import java.util.*;
import java.util.regex.*;
class Test
{
{
Pattern pattern = Pattern.compile("abfss?://(?:([^@/]*)@(\\d{1,3}(?:\\.\\d{1,3}){3}:\\d+)/([^/]+)|([^/]+)@([^.]+)(\\.[^/]+))(?:/(.+))?");
"abfs://storage@myaccount.dfs.core.windows.net/selim/test.csv",
"abfs://storage@127.0.0.1:10000/devstoreaccount1/selim/test.csv"
};
Matcher matcher = pattern.matcher(s);
if (matcher.find()){
if (matcher.group(5) != null) { // If original URL is found
String fileSystem
= matcher.
group(4); //storage String accountName
= matcher.
group(5); //myaccount String accountSuffix
= matcher.
group(6); //.dfs.core.windows.net String relativePath
= matcher.
group(7); //selim/test.csv System.
out.
println(s
+ ":\nfileSystem: " + fileSystem
+ "\naccountName: " + accountName
+ "\naccountSuffix: '" + accountSuffix
+ "'\nrelativePath:" + relativePath
+ "\n-----"); } else { // we have an Azurite URL
String fileSystem
= matcher.
group(1); //storage String accountName
= matcher.
group(3); //devstoreaccount1 String accountSuffix
= ""; // empty (or do you need matcher.group(2) to get "127.0.0.1:10000"?) String relativePath
= matcher.
group(7); //selim/test.csv System.
out.
println(s
+ ":\nfileSystem: " + fileSystem
+ "\naccountName: " + accountName
+ "\naccountSuffix: '" + accountSuffix
+ "'\nrelativePath:" + relativePath
+ "\n-----"); }
}
}
}
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS51dGlsLnJlZ2V4Lio7CgpjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCVBhdHRlcm4gcGF0dGVybiA9IFBhdHRlcm4uY29tcGlsZSgiYWJmc3M/Oi8vKD86KFteQC9dKilAKFxcZHsxLDN9KD86XFwuXFxkezEsM30pezN9OlxcZCspLyhbXi9dKyl8KFteL10rKUAoW14uXSspKFxcLlteL10rKSkoPzovKC4rKSk/Iik7CgkJU3RyaW5nW10gaW5wdXRzID0gewoJCSAgICAiYWJmczovL3N0b3JhZ2VAbXlhY2NvdW50LmRmcy5jb3JlLndpbmRvd3MubmV0L3NlbGltL3Rlc3QuY3N2IiwKCQkgICAgImFiZnM6Ly9zdG9yYWdlQDEyNy4wLjAuMToxMDAwMC9kZXZzdG9yZWFjY291bnQxL3NlbGltL3Rlc3QuY3N2IgoJCX07CgkJZm9yIChTdHJpbmcgczogaW5wdXRzKSB7CgkJCU1hdGNoZXIgbWF0Y2hlciA9IHBhdHRlcm4ubWF0Y2hlcihzKTsKCQkJaWYgKG1hdGNoZXIuZmluZCgpKXsKCQkJCWlmIChtYXRjaGVyLmdyb3VwKDUpICE9IG51bGwpIHsgLy8gSWYgb3JpZ2luYWwgVVJMIGlzIGZvdW5kCgkJCSAgICAgICAgU3RyaW5nIGZpbGVTeXN0ZW0gPSBtYXRjaGVyLmdyb3VwKDQpOyAvL3N0b3JhZ2UKCQkJICAgICAgICBTdHJpbmcgYWNjb3VudE5hbWUgPSBtYXRjaGVyLmdyb3VwKDUpOyAvL215YWNjb3VudAoJCQkgICAgICAgIFN0cmluZyBhY2NvdW50U3VmZml4ID0gbWF0Y2hlci5ncm91cCg2KTsgLy8uZGZzLmNvcmUud2luZG93cy5uZXQKCQkJICAgICAgICBTdHJpbmcgcmVsYXRpdmVQYXRoID0gbWF0Y2hlci5ncm91cCg3KTsgLy9zZWxpbS90ZXN0LmNzdgoJCQkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzICsgIjpcbmZpbGVTeXN0ZW06ICIgKyBmaWxlU3lzdGVtICsgIlxuYWNjb3VudE5hbWU6ICIgKyBhY2NvdW50TmFtZSArICJcbmFjY291bnRTdWZmaXg6ICciICsgYWNjb3VudFN1ZmZpeCArICInXG5yZWxhdGl2ZVBhdGg6IiArIHJlbGF0aXZlUGF0aCArICJcbi0tLS0tIik7CgkJCQl9IGVsc2UgeyAvLyB3ZSBoYXZlIGFuIEF6dXJpdGUgVVJMCgkJCSAgICAgICAgU3RyaW5nIGZpbGVTeXN0ZW0gPSBtYXRjaGVyLmdyb3VwKDEpOyAvL3N0b3JhZ2UKCQkJICAgICAgICBTdHJpbmcgYWNjb3VudE5hbWUgPSBtYXRjaGVyLmdyb3VwKDMpOyAvL2RldnN0b3JlYWNjb3VudDEKCQkJICAgICAgICBTdHJpbmcgYWNjb3VudFN1ZmZpeCA9ICIiOyAvLyBlbXB0eSAob3IgZG8geW91IG5lZWQgbWF0Y2hlci5ncm91cCgyKSB0byBnZXQgIjEyNy4wLjAuMToxMDAwMCI/KQoJCQkgICAgICAgIFN0cmluZyByZWxhdGl2ZVBhdGggPSBtYXRjaGVyLmdyb3VwKDcpOyAvL3NlbGltL3Rlc3QuY3N2CgkJCSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMgKyAiOlxuZmlsZVN5c3RlbTogIiArIGZpbGVTeXN0ZW0gKyAiXG5hY2NvdW50TmFtZTogIiArIGFjY291bnROYW1lICsgIlxuYWNjb3VudFN1ZmZpeDogJyIgKyBhY2NvdW50U3VmZml4ICsgIidcbnJlbGF0aXZlUGF0aDoiICsgcmVsYXRpdmVQYXRoICsgIlxuLS0tLS0iKTsKCQkJCX0KCQkJfQoJCX0KCX0KfQ==