このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/538
#  ●正規表現の使用環境  Flexible Renamer  
#  ●検索か置換か? 置換  
#  ●説明  
#  日付の前の文字を入れ替える 
#  ●対象データ  
#  ABC11-12-31   \d{2}-[A-Z]{3}-\d{2}  
#  ABC11-DEC-31  \d{2}-\d{2}-\d{2}  
#  ABC2011-12-31   \d{4}-[A-Z]{3}-\d{2}  
#  ABC2011-DEC-31  \d{4}-\d{2}-\d{2}  
#  ●希望する結果  
#  XYZ11-12-31 
#  XYZ11-DEC-31 
#  XYZ2011-12-31 
#  XYZ2011-DEC-31 
#  ●コメント:こんな感じか書いて投稿してみた 
# 

日付の前の文字を入れ替える(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        append(['A','B','C'|R21],[-|R22],[-|R23],L2),
        年の文字ならび(R21),
        月の文字ならび(R22),
        日の文字ならび(R23),
        append(['X','Y','Z'|R1],[-|R22],[-|R23],L22),
        atom_chars(S22,L22),
        concat_atom([S1,S22,S3],_置換された文字列).
日付の前の文字を入れ替える(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        append(['A','B','C'|R21],[-|R22],[-|R23],L2),
        年の文字ならび(R21),
        月の文字ならび(R22),
        日の文字ならび(R23),
        append(['X','Y','Z'|R1],[-|R22],[-|R23],L22),
        atom_chars(S22,L22),
        日付の前の文字を入れ替える(S3,_置換された文字列のニ),
        concat_atom([S1,S22],_置換された文字列の一),
        concat_atom([_置換された文字列の一,_置換された文字列のニ],_置換された文字列).
日付の前の文字を入れ替える(_文字列,_文字列).

年の文字ならび(R21) :-
        length(R21,4),
        すべて数字(R21),!.
年の文字ならび(R21) :-
        length(R21,2),
        すべて数字(R21),!.

月の文字ならび(R22) :-
        length(R22,1),
        すべて数字(R22),!.
月の文字ならび(R22) :-
        member(A,['JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC']),
        atom_chars(A,R22),!.

日の文字ならび(R21) :-
        length(R21,2),
        すべて数字(R21),!.
日の文字ならび(R21) :-
        length(R21,1),
        すべて数字(R21),!.