このディレクトリの索引
http://toro.2ch.net/test/read.cgi/tech/1323566370/695
#  Objective-CのNSRegularExpressionで、 
#  行頭の半角スペース列を置換しようとして@"^ +"と書いたのですが、文字列の最初しか行頭と認識してくれないらしく、 
#  複数行にまたがる文字列の各行頭のスペースが置換できないので、改行文字に続く次のスペースも検出しようとして 
#  @"^ +|\\n +" 
#  と書くと、改行文字も含めて置換してしまうため、マッチ部分をキャプチャする()を使って 
#  @"^( +)|\\n( +)" 
#  としたのですが、 
#  (2147483647,0)という文字列の外の範囲がマッチされてしまい、置換しようとしてエラーとなってしまいます。 
#  文字列途中も含めて、行頭の半角スペース列のみを置換するためにはどのようなパターンを使うのが適切でしょうか? 
# 
# 

'文字列途中も含めて、行頭の半角スペース列のみを置換する'(_改行を含む文字列,_置換文字列,_置換された改行を含む文字列) :-
        行頭の半角スペース列のならび(_改行を含む文字列,_前文字列,_行頭の空白ならび,_後文字列),
        '文字列途中も含めて、行頭の半角スペース列のみを置換する'(_後文字列,_置換文字列,_置換された改行を含む文字列_2),
        concat_atom([前文字列,'\n',_置換文字列,_置換された改行を含む文字列_2],_置換された改行を含む文字列),!.
'文字列途中も含めて、行頭の半角スペース列のみを置換する'(_文字列,_,_文字列).

行頭の半角スペース列のならび(_改行を含む文字列,_前文字列,_行頭の空白ならび,_後文字列) :-
        sub_atom(_改行を含む文字列,_,_,_,_前文字列,S2,_後文字列,L1,['\n'|R2],L3),
        \+(R2=[]),
        all(R2,' '),
        \+((L3=[A|R3],A=' ')).

% sub_atom/10