- ベストアンサー
謎の半角■文字を正規表現で文字を置き換えたい
よくCookiesのファイルで、半角の黒い■の文字があると思いますが、そのような文字を消したい為に、おそらく改行だろうということで $text =~ s/\n//g;としました。 それで、大部分は消せたのですが、それでも残っているのがあります。 他に考えられる制御文字はなんでしょう。 また、先の構文に当てはめるとs/の後になんと記述すればよいのでしょう。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>\W 単語キャラクターでないものにマッチします これでどうでしょうか?
その他の回答 (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; と書けば良いかと思います。
質問者
お礼
原因がわかりました。不明な制御文字はラインフィールドではなくキャリッジリターンでした。 VBとかで改行プログラム書くときにvbcrlfつまりキャリッジリターンラインフィールドとしますが、そういう状態だったのです。\nだとラインフィールドだけ消すことになりキャリッジリターンの制御文字は残ってしまうのです。 これを消す為に $text =~ s/\r//g;を追加して解決しました。 ありがとうございました。
お礼
教えていただいた\Wでやったというより、ご紹介のURLを参考にして原因がわかりました。不明な制御文字の正体はキャリッジリターンでした。 ありがとうございました。