このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/930
#  ((角|丸)ゴシック|明朝)
#  
#  こういった入れ子?を書くと例えば丸ゴシックにマッチしますが丸にもマッチします
#  どのように書けばよいのでしょう

'((角|丸)ゴシック|明朝)の内、角ゴシック|丸ゴシック|明朝に適合する'(_文字列,_前文字列,_適合文字列,_後文字列) :-
        sub_atom(_文字列,S,Len,R,_適合文字列_1),
        '診断: 適合'(_適合文字列_1),
        sub_atom(_文字列,0,S,_,_前文字列_1),
        S_2 is S + Len,
        sub_atom(_文字列,S_2,R,0,_後文字列_1),
        '((角|丸)ゴシック|明朝)の内、角ゴシック|丸ゴシック|明朝に適合する'(_文字列,S,Len,R,_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列).

'((角|丸)ゴシック|明朝)の内、角ゴシック|丸ゴシック|明朝に適合する'(_文字列,_前文字列,_適合文字列,_後文字列,_前文字列,_適合文字列,_後文字列).
'((角|丸)ゴシック|明朝)の内、角ゴシック|丸ゴシック|明朝に適合する'(_文字列,_前文字列_1,_適合文字列_1,_後文字列_1,_前文字列,_適合文字列,_後文字列) :-
        '((角|丸)ゴシック|明朝)の内、角ゴシック|丸ゴシック|明朝に適合する'(_後文字列_1,_前文字列_2,_適合文字列,_後文字列),
        atomic_list_concat([_前文字列_1,_適合文字列_1,_前文字列_2],_前文字列).

'診断: 適合'(_文字列) :-
        接頭候補(_接頭候補),
        atomic_list_concat([_接頭候補,ゴシック],_文字列).
'診断: 適合'(明朝).