次期主力bananaサーバ建造委員会 その5

このエントリーをはてなブックマークに追加
598 ◆Choco52.ko
>>549 (スレ違いなら適切なスレに誘導願います)
マルチバイト対応させてない Perl であれば、こんな感じでしょうか?

$re = '1−2−3'; # 固定文字として扱いたい
$re = '!2ch\.net/\w+'; # 正規表現として扱いたい(先頭の ! をスイッチとする)
if ($re =~ s/^\!//) { # スイッチ文字で分岐
# SJIS文字を含んだ正規表現として扱う(2バイト文字を適切にエスケープ)
$re =~ s/([\x81-\x9f\xe0\xfc])(?:(\W)|([\x40-\xfc]))/$2?"\x5c$1\x5c$2":"\x5c$1$3"/eg;
} else {
# 固定文字列として扱う
$re = "\Q$str";
}