• ベストアンサー

置換えについて

$com =~ s/\\/\/g; ↑のようにすると、能、ソ、申、等の2バイト目が「5C」コードになっている文字も変換されてしまいます。これを防ぐよい方法はないでしょうか? Perlはあまりよくわからないため、意味不明な説明でしたら申し訳ございません。

質問者が選んだベストアンサー

  • ベストアンサー
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

がんばればもっと高速なパターンも考えられるかもしれないけど とりあえずこの辺で。 use strict; use warnings; my $str = '\内申一覧表十枚ソ連から\10000で到着'; print $str, "\n"; $str =~ s{([\x81-\x9f\xe0-\xfc][\x40-\x7e\x80-\xfc]) | ([^\\]) | (\\) }{defined($3) ? '\' : $+}egx; print $str, " 実行結果: \内申一覧表十枚ソ連から\10000で到着 \内申一覧表十枚ソ連から\10000で到着

yuutoOK
質問者

お礼

書かれている内容を理解する事は今の自分のスキルでは到底不可能なので、自力で解決することはやはり不可能でした。 大変助かりました。有難うございます。

関連するQ&A

専門家に質問してみよう