K2さんの雑記
2002-10-09(Wed) [長年日記]■ [K2E]Perlの正規表現リテラル(続き)やったったよ。 コメントセット文字列の仕様を拡張して、右側のブラケットが複数回出現したときに閉じるという設定ができるように。また、コメントセット文字列にエスケープ文字を設定できるように... ただし、今のところ、論理行一行以内のときだけ、右側ブラケット複数回が可能にしてある。 これで十分だと思っていたのだが、ふと、「もしかして、perlのs/.../.../って、中に改行入れてもよいということはないよね? といやな予感が頭をよぎる。実は、もっと嫌なことを思いついてしまった。もしかしてRubyの""とかって、中に改行入れても動作するの? 改行って、\nのことじゃなくて、本当の改行(0xD0xAをバイナリで埋め込むということ)が入っていてもよいのかもー なんて考えが頭をよぎった。試してみると、なんと文字列の途中で改行が入っていても、Rubyはちゃんと動作する... むむむ。ということは、K2Editorの文字列識別子なんかは使えないということ。で、仕方ないのでRubyの設定では文字列認識をすべてコメントセット文字列でやることにした。エスケープ文字を指定できるようにしておいてよかったー。 で、perl。ちょっと今perlの実行環境がないので、確かめてないのだけど、s/.../.../の中にも改行が入れられるとなるとちょっと面倒なことが。いや、それでも複数回の右ブラケット仕様を作り込むことは可能なんだけど、かなり面倒というか、あー嫌だ嫌だ、やりたくないって感じ。行を越えると、よけいな心配をいっぱいしなければならないので、コーディングが10倍面倒になるのだった。 で、ActivePerlをセットアップして調査。うーわ、なんでもありですね... "..."も、/.../も、なんでも途中改行を受け入れてしまいはる。 あー、やっぱり甘かったか。改行が入っても、複数回の右ブラケットに対応しなくっちゃ。今日はやめ。寝ます。 しかし、"..."の途中に改行を入れてもよいということは、ヒアドキュメントというのは何? "が来てもエスケープしなくてもよいというだけの話? よくわからんようになってきた... [追記] いろいろ考えてみたが、やっぱり複数行にわたって右ブラケットを数えるというのは無理。この行ではいくつ右ブラケットがあったかというのを保存するのが不可能に近く、左ブラケットの位置まで返って、そこから数え直す必要があるが、これはコストがかかりすぎる。残念だけど、これはあきらめだなぁ。まぁ論理行内ならs/.../..../に対応できたからよしとするか。あんまり改行を入れることはないと思うし(改行を入れたら、その改行も正規表現として認識されるので、そんなフォーマットで書くのはむちゃくちゃ難しいのです)。でも、くやしい... 1965|09|
|
//
自己紹介
自己紹介
広告
計るだけダイエット
つっこみリスト
TrackBacks
日記仲間
な/
す/
ひ/
最近の日記
|