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


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

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2012/02/10 02:46:57
  • 終了:2012/02/17 02:50:02

回答(4件)

id:Cherenkov No.1

Cherenkov回答回数1503ベストアンサー獲得回数4932012/02/10 03:06:29

ポイント75pt

[^\\]+$

RegExp - MDN

id:central_dogma

ありがとうございます。

2012/02/10 19:28:35
id:oil999 No.2

oil999回答回数1728ベストアンサー獲得回数3202012/02/10 07:28:10

id:central_dogma

ありがとございます。

2012/02/10 19:28:49
id:wild_yamato No.3

無頼庵回答回数222ベストアンサー獲得回数452012/02/10 09:40:48

ポイント75pt

正規表現はプログラミング言語で変ります。(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桁としています。年の範囲指定や市何らかの識別子の範囲指定は更に厳密にすると効果的な抽出が可能になリますね。

id:central_dogma

なるほど。

2012/02/10 19:29:12
id:Ganan No.4

Ganan回答回数11ベストアンサー獲得回数12012/02/11 23:04:33

ポイント75pt

私は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/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません