このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1301067486/594
#  正規表現は、既出かどうかってのがわかりにくいね。 
#   
#  ●正規表現の使用環境 
#  Java1.6 
#   
#  ●検索か置換か? 
#  検索 
#   
#  ●説明 
#  変数文字列とその添字の取得 
#   
#  ●対象データ 
#  $AAA.BBB+$CCC.DDD.EEE(1234)-#FFF*#GGG.HHH(567) 
#   
#  ●希望する結果 
#  検索1回目 
#  group1 : $AAA.BBB 
#   
#  検索2回目 
#  group1 : $CCC.DDD.EEE 
#  group2 : 1234 
#   
#  検索3回目 
#  group1 : #FFF 
#   
#  検索4回目 
#  group1 : #GGG.HHH 
#  group2 : 567 
#   
#   
#  ($.*)\\(([0-9]*)\\) 
#  これで、$CCC.DDD.EEE(1234)をみつけれるのは出来たけど、添え字が無い場合を引っ掛けるのができない。 
# 
# 

'変数文字列とその添字の取得'(_文字列,_前文字列,_適合文字列,_後文字列,Group1,Group2) :-
        sub_atom(_文字列,_,_,_,_前文字列,_適合文字列,_後文字列,L1,['$'|R2],L3),
        \+((member(A,R),member(A,['+','-','*','/']))),
        '[]であるか先頭に+,-,*,/,が来る'(L3),
        group検査(R2,Group1,Group2).

'[]であるか先頭に+,-,*,/,が来る'([]) :- !.
'[]であるか先頭に+,-,*,/,が来る'([A|_]) :-
        member(A,[+,-,*,/]),!.

group検査(R2,Group1,'') :-
        \+(append(_,['('|_],R2)),
        atom_chars(Group1,R2),!.
group検査(R2,Group1,Group2) :-
        atom_chars(Group1,R2),
        append(_,['('|R3],R2),
        append(L0,[')'|_],R3),
        atom_chars(Group2,L0),!.