このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/229
#  2時間ほど悩みましたが、解決方法が見つからないので教えて下さい。 
#  検索条件 ★で始まり、間に「あ」を挟み、★でおわる 
#  ★と「あ」の間にはx文字(0〜10文字)ランダムに挟まっている 
#  例文 
#  ★123あ133s★124か1256★863あ13qw3s★1rtyさ12fd★あ1s★ 
#  抜き出したい箇所 
#  ★123あ133s★ 
#  ★863あ13qw3s★ 
#  ★あ1s★ 
#  どなたか頭のいいかた解決方法教えて下さい。 
# 
# 

'★で始まり、間に「あ」を挟み、★でおわる。★と「あ」の間にはx文字(0〜10文字)ランダムに挟まっている '(_文字列,_前文字列,_適合文字列,_後文字列) :-
        '★で始まり、間に「あ」を挟み、★でおわる。'(_文字列,_前文字列,_適合文字列,L0,R2_2),
        '★と「あ」の間にはx文字(0〜10文字)ランダムに挟まっている'(L0,R2_2).

'★で始まり、間に「あ」を挟み、★でおわる。'(_文字列,_前文字列,_適合文字列,L0,R2_2) :-
        sub_atom(_文字列,_,_,_,_前文字列,_適合文字列,_後文字列,L1,[★|R2],L3),
        append(R2_1,[★],R2),
        append(L0,[あ|R2_2],R2_1),
        間に挟んではいけない(R2_1,L0,R2_2).

間に挟んではいけない(R2_1,L0,R2_2) :-
        \+(member(★,R2_1)),
        \+(member(あ,L0)),
        \+(member(あ,R2_2)).

'★と「あ」の間にはx文字(0〜10文字)ランダムに挟まっている'(L0,R2_2) :- 
        length(L0,Len1),
        length(R2_2,Len2),
        Len1 =< 10,
        len2 =< 10.