2

私はこの正規表現を使用して、ファイルパス文字列からファイル名を抽出しています。

Regex r = new Regex(@"\w+[.]\w+$+");

これは、ファイル名にスペースがない限り機能します。例えば:

r.Match("c:\somestuff\myfile.doc").Value = "myfile.doc"
r.Match("c:\somestuff\my file.doc").Value = "file.doc"

「file.doc」だけでなく「myfile.doc」を取得するには、正規表現が必要です。

自分で表情をいじってみました。特に、空白を一致させるためのものであることを知った後、\s+を追加してみました。期待した結果が得られませんでした。

私は仕事を成し遂げるためだけに解決策を考案しました。私は文字列の最後から始めて、バックスラッシュに達するまで逆方向に進みました。これにより、ファイル名が逆の順序(つまり、cod.elifym)でcharの配列になり、Array.Reverse()を使用してファイル名を変更しました。ただし、元の正規表現を変更するだけでこれを実現する方法を学びたいと思います。

4

3 に答える 3

4

正規表現である必要がありますか?代わりにSystem.IO.Path.GetFileName()を使用してください。

于 2012-09-03T07:47:10.447 に答える
2
Regex r = new Regex(@"[\w ]+\.\w+$");
于 2012-09-03T07:47:40.773 に答える
1

動作する正規表現は、次のようになります。

[^\\]+$

以下の使用を検討してください。

System.IO.Path.GetFileName(path) 
于 2012-09-03T07:47:09.477 に答える