このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/775
#  ●正規表現の使用環境 
#  PCRE 
#   
#  ●検索か置換か? 
#  置換 
#   
#  ●説明 
#  <tag>から</tag>内の文字列abcをABCへ置換したい 
#   
#  ●対象データ 
#  xabcxxx<tag>abcxxxxxxxxxxxabcxxxxxxxabcxx</tag>xxxxabcxxxabcxx 
#  xabcxxx<tag>abc</tag>xxxxaxxxxxxxabcxxcxxxxx<tag>abcxx</tag>xxx 
#   
#  ●希望する結果 
#  xabcxxx<tag>ABCxxxxxxxxxxxABCxxxxxxxABCxx</tag>xxxxabcxxxabcxx 
#  xabcxxx<tag>ABC</tag>xxxxaxxxxxxxabcxxcxxxxx<tag>ABCxx</tag>xxx 
#   
# 
# 

'<tag>から</tag>内の文字列abcをABCへ置換したい'(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        append(L1_1,[<,t,a,g,>],L1),
        L3 = [<,/,t,a,g,>|R3],
        'tagまたは/tagを含まない'(L2),
        abcをABCへ置換(S2,S2_2),
        '<tag>から</tag>内の文字列abcをABCへ置換したい'(S3,_置換された文字列_2),
        atomic_list_concat([S1,S2_2,_置換された文字列_2],_置換された文字列),!.
'<tag>から</tag>内の文字列abcをABCへ置換したい'(_文字列,_文字列).

'tagまたは/tagを含まない'(L2) :-
        \+(append(_,[<,t,a,g,>|_],L2)),
        \+(append(_,[<,/,t,a,g,>|_],L2)).

abcをABCへ置換(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,abc,S3,_,_,_),
        abcをABCへ置換(S3,_置換された文字列_2),
        atomic_list_concat([S1,'ABC',_置換された文字列_2],_置換された文字列),!.
abcをABCへ置換(_文字列,_文字列).