このディレクトリの索引
#  ^.*\d{2}[a-zA-Z]?\.gif 
#  という表現がマッチする文字列があるとします。 
#  例えば、img01A.gifです。 
#  この文字列から、頭のゼロを外した数字を抜き出したいです。 
#  上の例では、「1」を抜き出したいです。 
#  「01」を抜き出すのでよければ、 
#  ^.*(\d{2})[a-zA-Z]?\.gif 
#  として、「$1」で受ければいいですが、 
#  頭のゼロをスマートに取り除く方法を模索しています。 
#  よろしくお願いします。有難うございます。

'^.*\d{2}[a-zA-Z]?\.gif 
という表現がマッチする文字列があるとします。 
例えば、img01A.gifです。 
この文字列から、頭のゼロを外した数字を抜き出したいです。 
上の例では、「1」を抜き出したいです。 
「01」を抜き出すのでよければ、 
^.*(\d{2})[a-zA-Z]?\.gif 
として、「$1」で受ければいいですが、 
頭のゼロをスマートに取り除く方法を模索しています。 
よろしくお願いします。有難うございます。'(_文字列,_頭部のゼロを取り除いた数字文字列) :-
        '文字列から、頭のゼロを外した数字を抜き出したいです。'(_文字列,_頭のゼロを取り除いた数字文字列).

'文字列から、頭のゼロを外した数字を抜き出したいです。'(_文字列,_頭のゼロを取り除いた数字文字列) :-
        数字文字ならびを切り取る(_文字列,_数字文字ならび),
        頭のゼロを取り除く(_数字文字ならび,_頭のゼロを取り除いた数字文字ならび),
        atom_chars(_頭のゼロを取り除いた数字文字列,_頭のゼロを取り除いた数字文字ならび).

数字文字ならびを切り取る(_文字列,_数字文字ならび) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,_数字文字ならび,L3),
        '_数字文字ならびは数字のみで構成され、L1に数字は含まず、L3の先頭文字は数字ではない'(L1,_数字文字ならび,L3).

'_数字文字ならびは数字のみで構成され、L1に数字は含まず、L3の先頭文字は数字ではない'(L1,_数字文字ならび,L3) :-
        forall(member(_数字文字,_数字文字ならび),数字(_数字文字)),
        forall(member(_文字,L1),\+(数字(_文字))),
        \+((L3 = [_文字|_],数字(_文字))),!.

頭のゼロを取り除く([],[]).
頭のゼロを取り除く([A|R],[A|R]) :-
        \+(A='0'),!.
頭のゼロを取り除く(['0'|R1],R2) :-
        頭のゼロを取り除く(R1,R2).
頭のゼロを取り除く([A|R1],[A|R2]) :-
        頭のゼロを取り除く(R1,R2).