2

次のファイル パスから拡張子なしでファイル名を抽出するにはどうすればよいですか。

D:\Projects\Extract\downtown - second.pdf

次の正規表現は、拡張子付きのファイル名を示します。[^\\]*$downtown - second.pdf 次の正規表現は、拡張子なしのファイル名を示します。(.+)(?=(\.))D:\Projects\Extract\downtown - second

2 つを 1 つの正規表現に結合して、必要な結果を得るのに苦労しています: ダウンタウン - 秒

4

5 に答える 5

6

あなたの2番目の正規表現では、あなたが示した出力が得られないと思います。最初の まで完全な文字列が得られますperiod (.)

拡張子なしのファイル名だけを取得するには、次の正規表現を使用できます: -

[^\\]*(?=[.][a-zA-Z]+$)

(.+)2番目の正規表現を最初の正規表現に置き換え、最後まで[^\\]*一致するパターンを追加しましpdfた。

これで、このパターンは0 or more、 以外の任意の文字の繰り返しに一致し、その後に a が続きbackslash(\)、拡張子を構成するアルファベットの繰り返しになります。.1 or more

于 2013-02-11T15:23:12.040 に答える
0

次の正規表現を使用して、/path/to/file.pdf からファイルをキャプチャしました。

[^/]*(?=\.[^.]+($|\?))

これがお役に立てば幸いです

于 2016-08-03T21:19:22.233 に答える
0

これを機能させるには、最初の「]」の前に余分なバックスラッシュを使用する必要がありました

[^\\\]*(?=[.][a-zA-Z]+$)
于 2013-02-28T16:07:15.107 に答える
0

このパターンを使っています

[^\/]+[.+\.].*$  for / path separator
[^\\]+[.+\.].*$  for \ path separator

hich は、文字を気にせずに、文字列の末尾にあるファイル名に一致します。何らかの理由でパスにピリオドが含まれるフォルダーがある場合、これが混乱するという例外が 1 つあります。先頭に . が付いている Linux の隠しディレクトリ。.rvm などは影響を受けません。

お役に立てれば。 http://rubular.com/r/LNrI4inMU1

于 2013-11-25T22:40:23.633 に答える