このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/483
#  ●希望する結果  
#  ;AA    [ac][ad]・・・・・[zw][zx]  [zz];AB[aa][zy]AC[ab]   ←;AAから;ABまでの[aa][zy][ab]を削除  
#  ;AA  [ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[df]AC[aa][fb]   ←;AAから;ABまでの[df][aa][fb]を削除  
#  ;AA[aa][ab][ac][ad]・・・・・[zw][zx][zy][zz];AB[bc][fh]AC[ge][eg] ←;AAから;ABまでの[bc][fh][ge][eg]を削除  
#   
#  この結果。。。ムリだ 
# 
# 

削除文字列('[aa][zy][ab]').
削除文字列('[df][aa][fb]').
削除文字列('[bc][fh][ge][eg]').

';AAから;ABまでの削除文字列を削除'(_対象文字列,_削除された文字列) :-
        findall(Chars,(
                    削除文字列(_削除文字列),
                    atom_chars(_削除文字列,Chars)),LL),
        ';AAから;ABまでの削除文字列を削除'(_対象文字列,LL,_削除された文字列).

';AAから;ABまでの削除文字列を削除'(_対象文字列,LL,_削除された文字列) :-
        sub_atom(_対象文字列,_,_,_,S1,S2,S3,L1,[';','A','A'|R2],[';','A','B'|R3]),
        '削除文字列を削除'(R2,LL,R2_2),
        atom_chars(S2_2,[';','A','A'|R2_2]),
        concat_atom([S1,S2_2,S3],_削除された文字列).

'削除文字列を削除'([],_,[]) :- !.
'削除文字列を削除'(R2,LL,L) :-
        member(LX,LL),
        append(LX,LR,R2),
        '削除文字列を削除'(LR,LL,L),!.
'削除文字列を削除'([A|R1],LL,[A|R2]) :-
        '削除文字列を削除'(R1,LL,R2),!.