このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/468
#  「ecv 0000 ef773s 1111 87ed93」と言った数字、文字、スペースが混ざった文字列から 
#  数字だけのブロック("0000"と"1111")を取り出したい場合のパターンを教えてください。 
#   
#  自分で思いつくのは下記。もっとスマートなやりかたないでしょうか 
#  1.\s→\r\nに置換 
#  2.^(\d+)$→●$1に置換 
#  3.^[^●].*$→空白に置換 
#  4.●→空白に置換 
#   
#  ちなみにサクラエディタです。 
#  よろしくお願いいたします。 
# 

'数字だけのブロック("0000"と"1111")を取り出したい'(_文字列,_前文字列,_適合文字列,_後文字列) :-
        sub_atom(_文字列,_,_,_,_前文字列,_適合文字列,_後文字列,L1,L2,L3),
        すべて数字(L2),
        'L1が空であるか最後の要素が空白または改行'(L1),
        'L3が空であるか最初の要素が空白または改行'(L3).

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

'L1が空であるか最後の要素が空白または改行'([]) :- !.
'L1が空であるか最後の要素が空白または改行'(L1) :-
        member(A,[' ','\n']),
        append(_,[A],L1),!.

'L3が空であるか最後の要素が空白または改行'([]) :- !.
'L3が空であるか最初の要素が空白または改行'([A|_]) :-
        member(A,[' ','\n']),!.