このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1268979408/958
#  XXXとYYYの間を削除したくて、 
#  javaで、replaceAll("XXX.*YYY", "") 
#  このようなコードを書いてるんですが、対象が複数ある場合にうまくいきません。 
#   
#  AAAXXXBBBYYYCCCXXXDDDYYYEEE 
#  AAACCCEEE ←このように変換したい  
#  AAAEEE ←こうなってしまう 
#   
#  最初のXXXと最後のYYYで認識されてしまってるようなんですが、どのようにすればよいでしょうか 
# 
# 

'XXXで始まり、YYYで終わる区間を削除する。複数ヶ所ある場合はすべて削除する'(_文字列,_削除された文字列) :-
        sub_atom(_文字列,S,3,R,'XXX'),
        sub_atom(_文字列,0,S,_,_副文字列の一),
        'YYYまでが削除対象'(_文字列,_残り文字列),
        'XXXで始まり、YYYで終わる区間を削除する。複数ヶ所ある場合はすべて削除する'(_残り文字列,_削除された文字列の一),
        concat_atom([_副文字列の一,_削除された文字列の一],_削除された文字列),!.
対象が複数ある部分文字列の削除(_文字列,_文字列).

'YYYまでが削除対象'(_文字列,_残り文字列) :-
        sub_atom(_文字列,S,3,_残り文字数,YYY),
        S2 is S + 3,
        sub_atom(_文字列,S2,_残り文字数,_,_残り文字列),!.