このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/php/1168450843/391
#  質問です。 
#  下記のような配列の中から、 
#  (2)〜(4)までのみを抽出したいと思っています。 
#   
#   (1) testa@hoge 
#   (2) _testb@hage 
#   (3) _testc@noge 
#   (4) _testd@nage 
#   (5) _teste@n_ge 
#   
#  ルールとしては、 
#   ・頭に[_]が付いている事、 
#   ・@の後ろに[n_]が付いていない事 
#  です。上記前提で下記のように書いたのですが、 
#  これですと(2)しか抽出されませんでした。 
#   
#   $test =~ /^_.*@[^(n_)]/ 
#   
#  @の後ろの正規表現が悪いのだと思うんですが、 
#  この場合どのように書けばいいんでしょうか。 
#  ご教示お願いしますm(_ _)m 
# 

'ルールとしては、頭に[_]が付いている事、@の後ろに[n_]が付いていない事'(_複数行文字列,_適合行) :-
        split(_複数行文字列,['\n'],_行ならび),
        append(_,[_行|_],_行ならび),
        'ルールとしては、頭に[_]が付いている事、@の後ろに[n_]が付いていない事'(_行).

'ルールとしては、頭に[_]が付いている事、@の後ろに[n_]が付いていない事'(_文字列) :-
        \+(sub_atom(_文字列,0,1,_,'_')),
        \+(sub_atom(_文字列,_,3,_,'@n_')).