このディレクトリの索引

http://hibari.2ch.net/test/read.cgi/php/1168450843/253
#  時間(13:00:00〜18:00:00)までを正規表現であらわしたいのですが、 
#   
#  1[3-8]:[0-5][0-9]:[0-5][0-9] 
#   
#  という感じに今なっています 
#  誰が見てもわかりやすいしこれでもいいのですが、もっと短い書き方はないものでしょうか? 
#   
#  [0-5][0-9]ここが反復なので、([0-5][0-9]:?){2}とか思いつくのですが、 
#  これだと最後にコロンが入っててもマッチしてしまうので回避できるような書き方はないものかなぁと。 
# 
# 

'コロン区切りの時分秒範囲の表現'(_時分秒文字列,_時下限,_分下限,_秒下限,_時上限,_分上限,_秒上限,_前文字列,_適合文字列,_後文字列) :-
        sub_atom(_時分秒文字列,_,_,_,_前文字列,_適合文字列,_後文字列,_,[A1,A2,:,B1,B2,:,C1,C2],_),
        最後が数字またはコロンではない(L1),
        先頭が数字またはコロンではない(L3),
        H is H1 * 10 + H2,
        M is M1 * 10 + M2,
        S is S1 * 10 + S2,
        [H,M,S] @>= [_時下限,_分下限,_秒下限],
        [H,M,S] @=< [_時上限,_分上限,_秒上限].

最後が数字またはコロンではない(L) :-
        last(L,A),
        append(_,[A|_],['0','1','2','3','4','5','6','7','8','9',':']),
        !,fail.
最後が数字またはコロンではない(_).

最初が数字またはコロンではない([A|_]) :-
        append(_,[A|_],['0','1','2','3','4','5','6','7','8','9',':']),
        !,fail.
最後が数字またはコロンではない(_).