このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/503
#  ●正規表現の使用環境  
#  oracle(regexp_replace) 
#  ●検索か置換か?  
#  置換  
#  ●説明  
#  ::でタグ名が記載されたデータを<>タグに変換したい 
#  ●対象データ  
#  :dog:I like dog 
#  :cat:I like cat  
#  ●希望する結果  
#  <dog>I like dog</dog> 
#  <cat>I like cat</cat> 
# 

'::でタグ名が記載されたデータを<>タグに変換したい'(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        L2 = [:|R2],
        last(R2,:),
        atom_chars(S21,R2),
        concat_atom([S1,<,S21,>],S22),
        '最初に現れたS21の後にを付加する'(S3,S21,S31,_),
        concat_atom([S22,S31],_置換された文字列).
'::でタグ名が記載されたデータを<>タグに変換したい'(_文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        L2 = [:|R2],
        last(R2,:),
        atom_chars(S21,R2),
        concat_atom([S1,<,S21,>],S22),
        '最初に現れたS21の後にを付加する'(S3,S21,S31,_残り文字列),
        concat_atom([S22,S31],_置換された文字列の一),
        '::でタグ名が記載されたデータを<>タグに変換したい'(_残り文字列,_置換された文字列のニ),
        concat_atom([_置換された文字列の一,_置換された文字列のニ],_置換された文字列).
'::でタグ名が記載されたデータを<>タグに変換したい'(_文字列,_文字列).

'最初に現れたS21の後にを付加する'(_文字列,S21,S31,S3) :-
        sub_atom(_文字列,_,_,_,S1,S21,S3,L1,L2,L3),
        concat_atom([S1,S21,'<',S21,'>'],S31),!.