このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/php/1168450843/554
#  PHPでPerl互換のpreg_replace関数を使った置換を行おうとしているのですが、 
#  やりたいことがうまく実現できません。 
#   
#  やりたいことは、 
#   
#  ・<tagA>という文字列と</tagA>のあいだに<tagInsert>という文字列を挿入したい 
#  ・ただし、<tagA>の中に<tagB>という文字列がある場合は、その<tagB>の下に挿入したい 
#   
#   
#  <失敗した正規表現> 
#  $new_str = preg_replace("/<tagA(.*?)>(.*?)(<(?!tagB).)*/", '<tagA\\1>\\2<tagInsert>\\3', $str); 
#   
#  <実現したい例> 
#  <tagA> 
#    <tagB> 
#    <tagB> 
#    <tagC> 
#  </tagA> 
#   
#  ↓置換実行 
#  <tagA> 
#    <tagB> 
#    <tagB> 
#    <tagInsert> 
#    <tagC> 
#  </tagA> 
# 
# 

'という文字列とのあいだにという文字列を挿入したい。ただし、の中にという文字列がある場合は、そのの下に挿入する'(Lines1,Lines2) :-
        append(L1,[''|R2],[''|R3],Lines1),
        \+(append(_,[''|_],R3)),
        append(_,[''|_],R3),
        append(L1,[''|R2],['',''|R3],Line2),!.
'という文字列とのあいだにという文字列を挿入したい。ただし、の中にという文字列がある場合は、そのの下に挿入する'(Lines1,Lines2) :-
        append(L1,[''|R2],[''|R3],Lines1),
        append(L1,['',''|R2],[''|R3],Line2),!.