このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/403
#  ●正規表現の使用環境  
#  Excel VBA 
#   
#  ●検索か置換か?  
#  置換  
#   
#  ●説明  
#  <>で囲まれた文字列を空白に置換したい。  
#   
#  ●対象データ  
#  あいうえお<ほげほげ>かきくけこ 
#  みかん<りんご<すいか>ぶどう>メロン 
#   
#  ●希望する結果  
#  あいうえおかきくけこ 
#  みかんメロン 
#   
#  --- 
#  検索:<*> 
#  置換: 
#  --- 
#  というふうにすると、 
#  一番目の例に対してはうまくいくのですが、入れ子になっている場合にうまくいきません。 
#  ↓のような結果になってしまいます。 
#  みかんぶどう>メロン 
#   
#   
#  お願いします。 
# 
# 

'<>で囲まれた文字列を空白に置換したい。'(_文字列,_置換された文字列) :-
         atom_chars(_文字列,Chars),
         'ならびの<>で囲まれた部分を空白に置換したい。'(Chars,_置換された文字ならび),
         atom_chars(_置換された文字列,_置換された文字ならび).

'ならびの<>で囲まれた部分を空白に置換したい。'([],[]).
'ならびの<>で囲まれた部分を空白に置換したい。'([<|R1],L) :-
        '<>に囲まれた部分を置換する'(R1,L1,R2),
        'ならびの<>で囲まれた部分を空白に置換したい。'(R2,L2),
        append(L1,L2,L),!.
'ならびの<>で囲まれた部分を空白に置換したい。'([A|R1],[A|R2]) :-
        'ならびの<>で囲まれた部分を空白に置換したい。'(R1,R2).

'<>に囲まれた部分を置換する'([>|R],[],R) :- !.
'<>に囲まれた部分を置換する'([<|R1],L,R) :-
         '<>に囲まれた部分を置換する'(R,L1,R1),
         '<>に囲まれた部分を置換する'(R1,L2,R),
         append(L1,L2,L),!.
'<>に囲まれた部分を置換する'([A|R1],[A|R2],R) :-
         '<>に囲まれた部分を置換する'(R1,R2,R),!.