- 958 名前:nobodyさん mailto:sage [2008/02/21(木) 10:39:56 ID:???]
- 無理に書くとこんな感じ? 全くお勧めしない。
# 絵文字部分を1文字ずつ加工。 # 1バイトずれてマッチしたり、ascii部分にマッチしないようにしてるので面倒 $str =~ s{ ( (?:\G | ^[^\1b]*\x1b\x24\x42) (?:[^\x1b]{2}|\x1b\x28\x42[^\x1b]*\x1b\x24\x42)*? ) ([\x75-\x7b])([\x21-\x7e]) }{ sprintf "%s\x1b\x28\x42[%02x%02x]\x1b\x24\x42", $1, ord($2), ord($3) }gex; # 冗長なエスケープシーケンスの並びを除去 $str =~ s/(\x1b\x24\x42)+/$1/g; $str =~ s/(\x1b\x28\x42)+/$1/g; $str =~ s/\x1b\x28\x42\x1b\x24\x42//g; $str =~ s/\x1b\x24\x42\x1b\x28\x42//g;
|

|