• ベストアンサー

謎の半角■文字を正規表現で文字を置き換えたい

よくCookiesのファイルで、半角の黒い■の文字があると思いますが、そのような文字を消したい為に、おそらく改行だろうということで $text =~ s/\n//g;としました。 それで、大部分は消せたのですが、それでも残っているのがあります。 他に考えられる制御文字はなんでしょう。 また、先の構文に当てはめるとs/の後になんと記述すればよいのでしょう。

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

  • ベストアンサー
  • papy-x
  • ベストアンサー率44% (12/27)
回答No.1

>\W 単語キャラクターでないものにマッチします これでどうでしょうか?

参考URL:
http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html
souta_n
質問者

お礼

教えていただいた\Wでやったというより、ご紹介のURLを参考にして原因がわかりました。不明な制御文字の正体はキャリッジリターンでした。 ありがとうございました。

その他の回答 (2)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.3

ANo.2の補足です。 Windows環境では、バイナリエディタで見ると「0A」(LF)だった、という説明が抜けていました。

  • taseki
  • ベストアンサー率66% (155/233)
回答No.2

バイナリエディタで見ると「0A」(LF)ですね。 「\n」が「0A」に該当するかどうかは、UNIX系とWindows系で違います。 $text =~ s/\x0A//g; と書けば良いかと思います。

souta_n
質問者

お礼

原因がわかりました。不明な制御文字はラインフィールドではなくキャリッジリターンでした。 VBとかで改行プログラム書くときにvbcrlfつまりキャリッジリターンラインフィールドとしますが、そういう状態だったのです。\nだとラインフィールドだけ消すことになりキャリッジリターンの制御文字は残ってしまうのです。 これを消す為に $text =~ s/\r//g;を追加して解決しました。 ありがとうございました。

関連するQ&A