このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/865
#  ../test/read.cgi/tech/1301067486/864 失礼しました 
#   
#  ●正規表現の使用環境 
#  psstpsstというリネームソフト(Perl互換) 
#   
#  ●検索か置換か? 
#  置換 
#   
#  ●説明 
#  最大4桁で書かれた数字部分を3桁に統一したい 
#   
#  ●対象データ 
#  ABCA01.txt 
#  BCAA2.txt 
#  CABA0255.txt 
#   
#  ●希望する結果 
#  AAA001.txt 
#  AAA002.txt 
#  AAA255.txt 
#   
#  どうぞよろしくおねがいします 
# 
# 

最大4桁で書かれた数字部分を3桁に統一したい(_文字列,_固定部分ファイル名,_置換された文字列) :-
        sub_atom(Line,_,_,_,S1,S2,S3,L1,L2,L3),
        ファイル部分の特定(S1,L2,L2_0,L2_1),
        最大4桁で書かれた数字部分を3桁に統一したい(_固定部分ファイル名,S1,L2_0,L2_1,S3,_置換された文字列).

ファイル部分の特定(S1,L2,L2_0,L2_1) :-
        \+((sub_atom(S1,_,1,0,A),ファイルを構成する文字(A))),
        append(L2_0,L2_1,['.',t,x,t],L2),
        すべて数字(L2_1),
        last(L2_0,B),
        \+(数字(B)).

最大4桁で書かれた数字部分を3桁に統一したい(_固定部分ファイル名,S1,L2_1,S3,_置換された文字列) :-
        三桁の数字に変換する(L2_1,_三桁の数字列),
        concat_atom([S1,_固定部分ファイル名,_三桁の数字列,'.txt',S3],_置換された文字列).
最大4桁で書かれた数字部分を3桁に統一したい(_固定部分ファイル名,S1,L2_1,S3,_置換された文字列) :-
        最大4桁で書かれた数字部分を3桁に統一したい(S3,_固定部分ファイル名,_置換された文字列_1),
        concat_atom([S1,_固定部分ファイル名,_三桁の数字列,'.txt',_置換された文字列_1],_置換された文字列).


ファイルを構成する文字(A) :-
        数字(A),!.
ファイルを構成する文字(A) :-
        A @>= 'A',
        A @=< 'Z',!.
ファイルを構成する文字(A) :-
        A @>= 'a',
        A @=< 'z',!.
ファイルを構成する文字(A) :-
        member(A,['-','_','#','$','~','&']),!.

数字(A) :-
        member(A,['0','1','2','3','4','5','6','7','8','9']).

全て数字([]).
全て数字([A|R]) :-
        数字(A),
        全て数字(R).

三桁の数字に変換する(L,_三桁の数字) :-
        concat_atom(['0','0','0'|L],S1),
        sub_atom(S1,_,3,0,_三桁の数字).