Javaでこれに似たようなことをしたい(文字列のリストから共通のプレフィックスを抽出する)。文字列のリストはファイルパスです
Eg:
List filePaths1 = new ArrayList();
filePaths1.add("/root/test1/asass");
filePaths1.add("/root/test1");
filePaths1.add("/root/test");
filePaths1.add("/root/test/aaa/");
filePaths1.add("/root/test/bbb/ccc");
filePaths1.add("/root/test/fff/");
filePaths1.add("/root/test/eee/asasa/");
filePaths1.add("/root/rahul/e?ee/asasa/");
filePaths1.add("/root/rahul/asasa/");
filePaths1.add("/root/rahul/no*tthis/asasa/**");
filePaths1.add("/etc/rahul/test");
上記のリストを渡すと、次の文字列のリストを返す関数を実装したいと考えています。
{"/root/test1", "/root/test", "/root/rahul", "/etc/rahul/test"}
各文字列を別の文字列と比較する必要があります。上記の場合、「/root/test1/assass」と「/root/test1」の 2 つの文字列を考慮すると、共通のプレフィックスが最も長いのが /root/test1 であるため、出力に追加します。 /root/test1 で始まる文字列が他にある場合は、/root/test1 で表されます。
その隣に /root/test で始まる 5 つの文字列があるため、出力リストには /root/test が含まれます。これは、これらの 5 つの文字列が「/root/test」として最も長い共通プレフィックスを持っているためです。
同様に、パターン /etc/rahul/test を持つ文字列は 1 つしかありません。これは、共有されていないか、定義されている他のパターンで始まるため、そのまま追加されます。
正規表現を使用してこれを行うことはできますか? どんな提案も本当に役に立ちます。他に必要な情報があれば教えてください。