このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1340383120/141
#  ●正規表現の使用環境  
#  C# 
#   
#  ●検索か置換か?  
#  検索  
#   
#  ●説明  
#  ●▼■ の部分をマッチさせたい  
#   
#  ●対象データ  
#  ほげほげ●▼■ほげおわり 
#  ほげほげ●▼■ほげここまで 
#   
#  ●希望する結果  
#  ●▼■ 
#   
#  ほげほげ(?<1>.+?)ほげおわり|ほげここまで 
#   
#  のように書きましたがだめみたいです。 
#  これだと 
#  ほげほげ(?<1>.+?)ほげおわり もしくは 
#  ほげここまで 
#  という風になってしまうのでしょうか? 
#  ほげおわり か ほげここまで のどちらかという書き方を教えてほしいです。 
# 
# 

'「ほげほげ」で始まり「ほげほげおわり」か「ほげほげここまで」で終わる'(_文字列,_前文字列,_検索文字列,_後文字列) :-
        sub_atom(_文字列,_,_,_,S1,S2,S3,L1,L2,L3),
        '「ほげほげ」で始まり'(S2,S2_1),
        '「ほげほげおわり」か「ほげほげここまで」で終わる'(S2_1),
        '「ほげほげ」で始まり「ほげほげおわり」か「ほげほげここまで」で終わる'(S1,S2,S3).

'「ほげほげ」で始まり「ほげほげおわり」か「ほげほげここまで」で終わる'(_前文字列,_検索文字列,_後文字列,_前文字列,_検索文字列,_後文字列).
'「ほげほげ」で始まり「ほげほげおわり」か「ほげほげここまで」で終わる'(S1,S2,S3,_前文字列,_検索文字列,_後文字列) :-
        '「ほげほげ」で始まり「ほげほげおわり」か「ほげほげここまで」で終わる'(S3,_前文字列_1,_検索文字列,_後文字列),
        atomic_list_concat([S1,S2,_前文字列_1],_前文字列).

'「ほげほげ」で始まり'(S2,S2_1) :-
        sub_atom(S2,0,4,R,ほげほげ),
        sub_atom(S2,4,R,0,S2_1),!.

'「ほげほげおわり」か「ほげほげここまで」で終わる'(S2_1) :-
        sub_atom(S2_1,S1,Len,0,ほげほげおわり),
        \+((sub_atom(S2_1,_,_,E,ほげほげ),E>3)).
'「ほげほげおわり」か「ほげほげここまで」で終わる'(S2_1) :-
        sub_atom(S2,_,_,0,ほげほげここまで),
        \+((sub_atom(S2_1,_,_,E,ほげほげ),E>4)).