このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/646
#  質問です 
#   
#  phpのpreg_replaceで文字列を入れ替えたいのですが 
#   
#  <a href="mailto:example@example.com">問い合せ</a> 
#   
#  のexample@example.comのみを入れ替えるにはどのような正規表現を使えば出来るでしょうか? 
#   
#  よろしくお願いします 
#   

'example@example.comのみを入れ替える'(_文字列,_入れ替える文字列,_置換された文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        メールアドレス部分(S2,L2),
        'example@example.comのみを入れ替える'(S3,_入れ替える文字列,_置換されたS3),
        concat_atom([S1,'"mailto:',_入れ替える文字列,'"',_置換されたS3],_置換された文字列),!.
'example@example.comのみを入れ替える'(_文字列,_,_文字列).

メールアドレス部分(S2,L2) :-
        L2 = ['"',m,a,i,l,t,o,:|R2],
        append(L2_1,['"'],R2),
        \+(member('"',L2_1)),
        atom_chars(S2_2,R2),
        メールアドレスとして可能な文字文字列(S2_2),!.

メールアドレスとして可能な文字列(_文字列) :-
        split(_文字列,['@'],[A,B]),
        メールに使用できるアルファベット(A),
        メールに使用できるアルファベット(B).

メールに使用できるアルファベット(_文字) :-
        char_code(_文字,_文字コード),
        メールに使用できる文字コード(_文字コード),!.
メールに使用できるアルファベット(_文字) :-
        member(_文字,['_','-','~']).

メールに使用できる文字コード(_文字コード) :-
        _文字コード >= 65,
        _文字コード =< 90,!.
メールに使用できる文字コード(_文字コード) :-
        _文字コード >= 97,
        _文字コード =< 122,!.
メールに使用できる文字コード(_文字コード) :-
        _文字コード >= 48,
        _文字コード =< 57,!.