- 2007/07/22 Sun
-
体調が良くわかりません。
とりあえずそろそろ昼なので寝ます。 行頭の1.とか10.を①とか⑩に。s/^((?:\s|\xE3\x80\x80)*)([\x31-\x32])?([\x30-\x39])\x2E/"$1\xE2\x91".chr(($2?(ord($2)-0x30)*10:0)+ord($3)+0x6F)/egm;
全角なら、s/^((?:\s|\xE3\x80\x80)*)(?:\xEF\xBC([\x91-\x92]))?\xEF\xBC([\x90-\x99])\xEF\xBC\x8E/"$1\xE2\x91".chr(($2?(ord($2)-0x90)*10:0)+ord($3)+0x0F)/egm;
範囲外を除外するなら、s/^((?:\s|\xE3\x80\x80)*)([\x31-\x39])\x2E/"$1\xE2\x91".chr(ord($2)+0x6F)/egm; s/^((?:\s|\xE3\x80\x80)*)\x31([\x30-\x39])\x2E/"$1\xE2\x91".chr(ord($2)+0x79)/egm; s/^((?:\s|\xE3\x80\x80)*)\x32\x30\x2E/$1\xE2\x91\xB3/gm;
行整形するなら、s/^((?:\s|\xE3\x80\x80)*)(?:)([\x31-\x39])\x2E/"$1\xE2\x91".chr(ord($2)+0x6F)/egm; s/^((?:\s|\xE3\x80\x80)*)\x31([\x30-\x39])\x2E/"$1\xE2\x91".chr(ord($2)+0x79)/egm; s/^((?:\s|\xE3\x80\x80)*)\x32([\x30-\x30])\x2E/"$1\xE2\x91".chr(ord($2)+0x83)/egm;
一行でなら、s/^((?:\s|\xE3\x80\x80)*)([\x31-\x39]|\x31[\x30-\x39]|\x32\x30)\x2E/"$1\xE2\x91".chr((length($2)==1?ord($2):(substr($2,0,1)eq"\x31"?10:20)+ord(substr($2,1,1)))+0x6F)/egm;
メモリ変数を無闇に使うなら、s/^((?:\s|\xE3\x80\x80)*)(?:([\x31-\x39])|(\x31)([\x30-\x39])|(\x32)(\x30))\x2E/"$1\xE2\x91".chr(ord($2+$4+$6)+0x6F+($3?10:0)+($5?20:0))/egm;
とかなんとか。
ぼけと明後日の方向を目をやりながら。