このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/546
#  ●正規表現の使用環境 
#  Microsoft .NET Framework 
#   
#  ●検索か置換か? 
#  検索 
#   
#  ●説明 
#  下記条件(AND条件)のURLを検索したいです。 
#  ・特定のドメイン(yahoo.co.jp)がhttp://ime.nu/直後に含まれない。 
#  ・特定の拡張子(jpg,gif)で終わらない。 
#   
#  ●対象データ 
#  1.http://ime.nu/yahoo.co.jp/?=abc 
#  2.http://ime.nu/yahoo.co.jp/abc.jpg 
#  3.http://2ch.net/?=abc 
#  4.http://2ch.net/abc.jpg 
#  ・・・など複数URL 
#   
#  ●希望する結果 
#  3のみを検索したいです。 
#   
#  よろしくお願いします。 
# 
# 

'下記条件(AND条件)のURLを検索したいです。・特定のドメイン(yahoo.co.jp)がhttp://ime.nu/直後に含まれない。・特定の拡張子(jpg,gif)で終わらない。'(_対象文字列,_前文字列,_適合文字列,_後文字列) :-
        sub_atom(_対象文字列,_,_,_,_前文字列,_適合文字列,_後文字列,L1,L2,L3),
        sub_atom(適合文字列,0,7,_,'http://'),
        'URLの終止条件'(L3),
        \+(排除条件(L2)).

'URLの文字種検査'([]) :- !.
'URLの文字種検査'([A|R]) :-
        アルファベット(A),
        'URLの文字種検査'(R).
'URLの文字種検査'([A|R]) :-
        数字(A),
        'URLの文字種検査'(R).
'URLの文字種検査'([A|R]) :-
        'URLに許される特定の英記号'(A),
        'URLの文字種検査'(R).

アルファベット(A) :-
        A @>= 'A',
        A @=< 'Z',!.
アルファベット(A) :-
        A @>= 'a',
        A @=< 'z',!.

数字(A) :-
        A @>= '0',
        A @=< '9',!.

'URLに許される特定の英記号'(A) :-
        member(A,['%','&','=','_','-','.','/','~','#']),!.

'URLの終止条件'(['\n'|R3]) :- !.
'URLの終止条件'([' '|_]) :- !.
'URLの終止条件'(['\t'|_]) :- !.

排除条件([h,t,t,p,:,/,/,i,m,e,'.',n,u,/,y,a,h,o,o,'.',c,o,'.',j,p|_]) :- !.
排除条件([h,t,t,p,:,/,/|R]) :-
        append(_,[g,i,f],R),!.
排除条件([h,t,t,p,:,/,/|R]) :-
        append(_,[j,p,g],R),!.