Bruce.さん
>> 意味のない例ですが、look-behindもいけますね。(^^)v
>
>perlのlook-behindはその仕様上固定長である必要があります
>(ぢつは抜け道がないわけでもない)。したがって、ShiftJISの
>ようなマルチバイト文字エンコーディングの場合、たとえば
>'.' が表す一文字が1バイトである可能性も2バイトである可能性
>もともにあります。このため、latin-1(通常のPerlが使用するで
>あろうと仮定されているエンコーディング)とは異なり、'.'が
>可変長になってしまうのでlook-behindで使うことができません。
うーん、め、明晰。明晰すぎるほど明晰です。よく分かりました。
m(__)m
>文太さんの例でうまく行ったように見えたのは、単にバイト列
>として戻り読みをしても問題がなかったからです。
了解です。
>たとえば (?<=@)\d+ という正規表現があったとき、
>@が先行する数字列にマッチすることが期待されますが、
>ShiftJISの場合2バイト目に@と同じ文字コード(0x40)を
>含む文字が存在します。これらの文字に対してもバイト列
>として眺めてしまうのでマッチが成功してしまう可能性が
>あります。
引用ばかりのレスで申し訳ありません。でもどこも切れない。
とてもよく分かりました。できたら応用的に理解したいとは思うのですが、文
字コードが体系的に頭に浮かびません。それでも、2バイトばっかりの文章相手
なら大丈夫なのかなと思っています。
jperlでlook-behindができるとは思うな、とは覚えておきます。m(_B_)m
文太