strreplace で、結果を格納する変数を引数に渡したときの動作
内部で strmatch と同じ FindRegexStringOne() を利用しているので格納されてしまう。
「引数受け取り時にチェックしてErrSyntaxを返す」は可能でしょうか?
エラーにする事は可能ですが、エラーコードがErrSyntaxだとちょっと分かり辛いと思います。 かといって他のはもっと合わないので、エラーにするのだったらこれ用のエラーコードの新設ですかね。
あと、matchstr等への代入自体は禁止されていないので、strreplaceでだけエラーにするというのもちょっと抵抗があります。 矛盾が起きるのがstrreplaceのみなのでしょうがないと言えばそうなのですが。
例えば、
matchstr="@@HOGE@@" strreplace matchstr 0 "[A-Z]+" "FUGA"というコードを書いた場合は、マッチした文字列としてのmatchstrを使おうとは考えていないと思われる(*1)ので、 現状のように置き換えられた後の文字列が入る形でいいんじゃないかなと思っています。
*1: マッチした文字列としてのmatchstrを使う気があるのならば当然matchstrを二重に使おうとしている事に気づくだろうし、 その上でmatchstrにマッチした文字列が入って欲しいのならばそもそもstrmatchを使えばいい事になりますし。
わかりました。現状のままでいいと思います。
r5069の変更で落ちないように対処していただいた。
仕様がどうあるべきか検討が必要。
現象:strreplace で matchstr や groupmatchstr1-9 を置き換えようとすると落ちる