人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C:\img8032984\data98040329\2012-02-09-00-11-23-34-abc004.jpg

のようなファイル名があり、
2012-02-09-00-11-23-34-abc004.jpg
だけ取り出したいのですが、
末尾の.jpgをうまく使用して、ファイル名を取り出す
正規表現を教えてください。

●質問者: central_dogma
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● Cherenkov
●75ポイント

[^\\]+$

RegExp - MDN


central_dogmaさんのコメント
ありがとうございます。

2 ● oil999
●75ポイント
[^\\]+\.jpg

http://hodade.adam.ne.jp/seiki/


central_dogmaさんのコメント
ありがとございます。

3 ● 無頼庵
●75ポイント

正規表現はプログラミング言語で変ります。(http://ja.wikipedia.org/wiki/%E6%AD%A3%E8%A6%8F%E8%A1%A8%E7%8F%BE)
Wikpediaで示す基本的な表現は"*/2012-02-09-00-11-23-34-abc004.jpg"となります。
しかし、この説明にもありますが言語によって"."などが正規表現の演算子となっています。

因みに私が利用しているJGAWKでは"-"も正規表現の演算子ですので、次になりす。
"*/2012\-02\-09\-00\-11\-23\-34\-abc004\.jpg$"
ここで"\"は、演算子を打ち消します。また、"$"は末尾を示す演算子です。
もし、このファイル名が年月日と時刻と何らかの識別子及び拡張子の組合せであるならば、次のように制約ができます。
"*/([1950-2012]\-[01-12]\-[01-31]\-[00-23]\-[00-59]\-[00-99]\-[a-x][a-x][a-x][000-999]\.jpg$"
年は1950年から今年までとしました。何らかの識別子は英小文字3桁と数値3桁としています。年の範囲指定や市何らかの識別子の範囲指定は更に厳密にすると効果的な抽出が可能になリますね。


central_dogmaさんのコメント
なるほど。

4 ● Ganan
●75ポイント

私はRuby言語を使っているので、Rubyの場合は下記になります。
temp.txtというテキストファイルの中身:
C:\img8032984\data98040329\2012-02-09-00-11-23-34-abc004.jpg

test.rbというファイルの中身:
doc = File.read("temp.txt") #temp.txtファイルの中身をdocに代入
/.*\\(.*?\.jpg)/ =~ doc #正規表現の記述。()内は$1に代入される
puts $1 #$1を出力する

temp.txtとtest.rbの2つのファイルを同じディレクトリ(フォルダ)に置き、
例えば、C:\に保存するときは
コマンドプロンプトを起動して
cd C:\(改行)
ruby test.rb(改行)
と実行すると
2012-02-09-00-11-23-34-abc004.jpg
とファイル名が取り出されます。
rubyのインストール方法は下記をご参考ください。
http://www.ruby-lang.org/ja/

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ