0

パスの末尾の「file.type」を置き換えようとしています。この正規表現を書きましたが、うまくいかないようです:

String path = otherPath.replaceAll("(.*)/[a-zA-Z]*/.[a-zA-Z]*", "")

エラーはどこにありますか?

例: パス this/is/a/path/file.txt がある場合、上記のステートメントを使用してパスを生成したいと思います: this/is/a/path/

4

4 に答える 4

0

これを試して:

String path = path.replaceAll("(/.)*[a-zA-Z]*", "")
于 2013-11-08T14:29:48.137 に答える
0

次の正規表現パターンが役立つ場合があります。

"[^.\\/]+?\\.[^.]+$"
于 2013-11-08T14:31:02.223 に答える
0

私は単に使用します:"\\.+\\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"
于 2013-11-08T14:32:06.947 に答える
0

答え

拡張機能を解析するためのRegexBuddyのライブラリによると、次の正規表現は次のとおりです。

\.[^.\\/:*?"<>|\r\n]+$

正規表現の視覚化

Debuggex デモ

あなたのためのコード

path = path.replaceAll("(?i)\\.[^.\\\\/:*?\"<>|\r\n]+$", "");
于 2013-11-08T14:33:44.137 に答える