このディレクトリの索引

# 出典 :: 正規表現 Part9 #786 # \rが30回登場したら30回目より後ろの文字を削除したいんですがどう記述したら良いでしょう。 # \rから次の\r間には任意の文字数の文字列があります # 言語はパールです # # $s =~ s/(((.*?)\r){3})(.*$)//s; # print "$1\n$2\n$3\n$4\n"; # これではだめでした # # # 'キャリッジ・リターンが30回登場したら30回目より後ろの文字を削除したい'(_文字列,_末尾を削除された文字列) :- 'キャリッジ・リターンが30回登場したら'(_文字列,_末尾を削除された文字列). 'キャリッジ・リターンが30回登場したら30回目より後ろの文字を削除したい'(_文字列_1,_文字列) :- 'キャリッジ・リターンが30回未満しかない場合そのまま文字列を解とする'(_文字列_1,_文字列). 'キャリッジ・リターンが30回登場したら'(_文字列,_末尾を削除された文字列) :- sub_atom(_文字列,0,_,_,_末尾を削除された文字列), sub_atom(_文字列,_,1,0,'\r'), 度数(sub_atom(_末尾を削除された文字列,_,1,_,'\r'),30). 度数(P,_度数) :- findall(1,P,L), length(L,_度数). 'キャリッジ・リターンが30回未満しかない場合そのまま文字列を解とする'(_文字列,_文字列) :- \+('キャリッジ・リターンが30回登場したら'(_文字列,_)).