|
YK さん今日は、ひろです。
> $aの中の"+"を"\+"とすればよいのだと思いますが、$aが未知の内容(文字列は
> 与えられるが内容は不明)だとしても、うまく行くやり方はないでしょうか。
要するに、$a は任意に与えられるので、「+」が含まれている場合に限り、
「\+」に置き換えたいということでしょうか? それなら、バファ内で文字列を
置換すればよいです。具体的には、末尾のようなサブルーチンを利用します。
//---------- 正規表現のメタキャラクタの置換サンプル -----------------
$$return="1+2=3";
call ChangeCharacter $$return, "\\","\\\\";//これは最初
call ChangeCharacter $$return, "+","\\+";
call ChangeCharacter $$return, "[","\\[";
call ChangeCharacter $$return, "]","\\]";
call ChangeCharacter $$return, "(","\\(";
call ChangeCharacter $$return, ")","\\)";
call ChangeCharacter $$return, ".","\\.";
call ChangeCharacter $$return, "*","\\*";
call ChangeCharacter $$return, "?","\\?";
call ChangeCharacter $$return, "^","\\^";
call ChangeCharacter $$return, "$","\\$";
call ChangeCharacter $$return, "|","\\|";
searchdown "主題:[ \t]*"+$$return ,regular;
endmacro;
ChangeCharacter://buff 中の文字列を置換
//$$1:buff
//$$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;
|
|