|
可愛村のたかしさん今日は、Iranoan です。
> 文頭に{setcompatiblemode 0x0F;}
> が表示されますが、これがヘルプを読んでも理解できません。
・これまでのマクロとの互換性を維持
・逆に新しい機能をマクロで使う
・動作条件の切り替え
といった目的で使います。
> お題 「ちらつく」
> 幸せになればちらつく欲の神大竹保行(広島県東広島市)
> 優勝がちらついてから負け続け田中良典(大阪府泉佐野市)
> 女房の顔ちらついて腰が浮く稲本勝美(川崎市麻生区)
<snip>
> 派遣 社員より派遣の意見聞く社長白川順一(東京都杉並区)
に整形すれば良いわけですね。ブロック単位で処理していくしか無いでしょう。
最初にその情報を削除してしまうと、区切りが解らなくなります。
そこでブロック単位に置換していくと良いでしょう
細かく言葉で説明するのはかえって面倒なので、サンプルを付けておきます。
//------------------------------------------------------------
gofiletop;//取り敢えずファイル先頭に移動
while( 1 ){
searchdown2 "^(お題 「)(.+?)(」)(?\\2)", regular;
if( !result )break;
$$return = gettext( foundtopx, foundtopy, foundendx, foundendy );
selectline;
delete;
beginsel;
searchdown2 "^お題 「.+?」", regular;//次を検索
if( result )golinetop2;
else gofileend;//次が見つからない時は、ファイル終端までを範囲とする
endsel;
call ChangeCharacter $$return, "\\", "\\\\";//正規表現を使うので、\ は変換
replaceallfast "^", $$return + " ", regular, inselect;
}
endmacro;
ChangeCharacter://buffer 中の文字列を置換
//$$1:buffer
//$$2:検索文字列
//$$3:置換文字列
##change_char=strlen($$2);
$$string = "";
while(1){
##number = strstr($$1, $$2);
if(##number == -1)break;
else{
##long = strlen($$1);
$$string = $$string + leftstr($$1, ##number) + $$3;
$$1 = rightstr($$1, ##long - ##number - ##change_char);
}
}
return $$string + $$1;
|
|