このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/727
#  わかりにくい質問かもしれませんがよろしくお願いします。 
#   
#  ●正規表現の使用環境 
#  Java(Android) 
#   
#  ●検索か置換か? 
#  検索 
#   
#  ●説明 
#  文字列から、数値を含むURLを検索し、その数値を取得したい 
#   
#  ●対象データ 
#  http://ime.nu/some_website.net/category:63 
#  http://ime.nu/some_website.net/category:19 
#  ・・・ 
#  のように、数値を含むURLを含んだ文字列 
#   
#  ●希望する結果 
#  http://ime.nu/some_website.net/category:63 
#  だったら、63を取得 
# 
# 

'文字列から、数値を含むURLを検索し、その数値を取得したい'(_文字列,_前文字列,_適合文字列,_後文字列) :-
        '数値を含むURLを検索し'(_文字列,_前文字列_1,_数値を含むURL,_後文字列_1),
        数値を取得したい(_数値を含むURL,_前文字列_2,_適合文字列,_後文字列_2),
        concat_atom([_前文字列_1,_前文字列_2],_前文字列),
        concat_atom([_後文字列_2,_後文字列_1],_後文字列).

'数値を含むURLを検索し'(_文字列,_前文字列,_数値を含むURL,_後文字列) :-
        sub_atom(_文字列,_,_,_,_前文字列_1,_数値を含むURL_1,_後文字列_1,L1,L2,L3),
        'URLである'(L2),
        'L3は[]であるか先頭が空白'(L3),
        '数値を含むURLを検索し'(_前文字列_1,_数値を含むURL_1,_後文字列_1,_前文字列,_数値を含むURL,_後文字列).

'数値を含むURLを検索し'(_前文字列,_数値を含むURL,_後文字列,_前文字列,_数値を含むURL,_後文字列).
'数値を含むURLを検索し'(_前文字列_1,_数値を含むURL_1,_後文字列_1,_前文字列,_数値を含むURL,_後文字列) :-
        '数値を含むURLを検索し'(_後文字列_1,_前文字列_2,_数値を含むURL,_後文字列),
        concat_atom([_前文字列_1,_数値を含むURL_1,_前文字列_2],_前文字列).

'URLである'([h,t,t,p,:,/,/|R]) :-
        \+(member(' ',R)),!.
'URLである'([h,t,t,p,s,:,/,/|R]) :-
        \+(member(' ',R)),!.
'URLである'([f,t,p,:,/,/|R]) :-
        \+(member(' ',R)),!.
'URLである'([f,i,l,e,:,/,/|R]) :-
        \+(member(' ',R)),!.

'L3は[]であるか先頭が空白'([]) :- !.
'L3は[]であるか先頭が空白'([' '|_]).

数値を取得したい(_数値を含むURL,_前文字列,_適合文字列,_後文字列) :-
        sub_atom(_数値を含むURL,_,_,_,_前文字列_1,_適合文字列_1,_後文字列_1,L1_1,L2_1,L3_1),
        全てが数字(L1),
        \+((last(L1,A),数字(A))),
        \+((L3 = [B|_],数字(B))).
        数値を取得したい(_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列).

数値を取得したい(_前文字列,_適合文字列,_後文字列,_前文字列,_適合文字列,_後文字列).
数値を取得したい(_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列) :-
        数値を取得したい(_後文字列_1,_前文字列_2,_適合文字列,_後文字列),
        concat_atom([_前文字列_1,_適合文字列_1,_前文字列_2],_前文字列).

全てが数字([]).
全てが数字([A|R]) :-
        数字(A),
        全てが数字(R).

数字(A) :-
        member(A,['0','1','2','3','4','5','6','7','8','9']),!.
数字(A) :-
        member(A,[0,1,2,3,4,5,6,7,8,9]).