dポイントプレゼントキャンペーン実施中!

C#にて、ファイルパスの中間部分だけを取り出す方法を考えておりますが、苦慮しております。

「C:\xxx\yyy\zzz.exe」の「yyy」だけ取り出す正規表現を教えてください。

A 回答 (1件)

正規表現でなくてすみません。


string filepass = "C:\\xxx\\yyy\\zzz.exe";
string[] dir = filepass.Split(new char[]{'\'});

結果
dir[0] = "C:"
dir[1] = "xxx"
dir[2] = "yyy"
dir[3] = "zzz.exe"

こういう手法でしたら、"C:\xxx\aaa\yyy\zzz.exe"でも"c:\xxx\yyy\aaa\zzz.exe"あっても、配列の長さから計算してyyyを取得できますしいいかと思いましたけど。
dir[0]がドライブパス。
dir[dir.length]が一番最後と分かりますし。

c:\xxx\yyy\zzz.exeという構造が固定なら、後方から正規表現で\yyy\の範囲を当てればyyyはとれますが、ディレクトリの状況によってしまうので、zzz.exeの一つ前のディレクトリを知りたい時以外は使えないかと。

あとは(?<!:)\\とやって、ドライブ直下のディレクトリを出さないとかでxxx\yyyのyyyは取れます。

最近C#は使ってなかったので配列とかに間違いあるかもしれません(テストしてないので…)

参考URL:http://msdn.microsoft.com/ja-jp/library/b873y76a …
    • good
    • 0
この回答へのお礼

非常に助かりました。
正規表現以外に、Splitがありましたね。
ありがとうございます。

お礼日時:2010/12/19 16:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!