このディレクトリの索引
http://pc12.2ch.net/test/read.cgi/tech/1262163854/238
#  Repl-Aceというテキスト置換ツールを使っているんですが、 
#   
#  1月 
#  ・1日 
#  ・2日 
#  ・3日 
#  2月 
#  ・1日 
#  ・2日 
#  ・3日 
#   
#  といったテキストを、 
#   
#  1月1日 
#  1月2日 
#  1月3日 
#  2月1日 
#  2月2日 
#  2月3日 
#   
#  といったように置換することができず困っています。 
#  単純な文字の置換や簡単な正規表現は理解できるのですが、 
#  1月から2月までの「・」を「1月」に置換、2月から3月までの「・」を「2月」に置換、3月から(ry 
#  を一気に行えるような正規表現ってありますか? 
#  Repl-Aceで試すのは自力でやるので、一般的な記述方法があれば教えてください。 
#  おながいします。 
#   

月日の構造表現を平坦な月日に置換(InputTextFile,OutputTextFile) :-
        get_lines(InputTextFile,Lines),
        平坦な月日に置換(Lines,L),
        put_lines(OutputTextFile,L).

平坦な月日に置換([],[]) :- !.
平坦な月日に置換([_月|R1],L) :-
        \+(sub_atom(_月,0,1,_,'.')),
        平坦な月日に置換(_月,R1,R2,L1),
        平坦な月日に置換(R2,L2),
        append(L1,L2,L).

平坦な月日に置換(_,[],[],[]) :- !.
平坦な月日に置換(_,[_月|R1],[_月|R1],[]) :-
        \+(sub_atom(_月,0,1,_,'.')),!.
平坦な月日に置換(_月,[A|R1],R,[C|R2]) :-
        sub_atom(A,1,_,0,B),
        concat_atom([_月,B],C),
        平坦な月日に置換(_月,R1,R,R2),!.