パスの末尾の「file.type」を置き換えようとしています。この正規表現を書きましたが、うまくいかないようです:
String path = otherPath.replaceAll("(.*)/[a-zA-Z]*/.[a-zA-Z]*", "")
エラーはどこにありますか?
例: パス this/is/a/path/file.txt がある場合、上記のステートメントを使用してパスを生成したいと思います: this/is/a/path/
これを試して:
String path = path.replaceAll("(/.)*[a-zA-Z]*", "")
次の正規表現パターンが役立つ場合があります。
"[^.\\/]+?\\.[^.]+$"
私は単に使用します:"\\.+\\w+"
正規表現として:
String s = "file.type.type.type";
s = s.replaceAll("\\.+\\w+", "");
System.out.println(s); // print "file"
これ\\w+
は、正規表現の事前定義された文字クラスであり、A word character: [a-zA-Z_0-9]
これは、一度に"file"
すべてを削除することを出力します。".type"
ただし、ファイル名から最後のものだけを削除したい場合は、ファイル名から最後の「.type」のみを削除する".type"
を使用するのが最も簡単です。s.substring(0, s.lastIndexOf("."))
String s = "file.type.type.type";
s = s.substring(0, s.lastIndexOf(".")); // print "file.type.type"
拡張機能を解析するためのRegexBuddyのライブラリによると、次の正規表現は次のとおりです。
\.[^.\\/:*?"<>|\r\n]+$
path = path.replaceAll("(?i)\\.[^.\\\\/:*?\"<>|\r\n]+$", "");