- ベストアンサー
Perlでの検索
はじめまして。 Perlにて、テキストから "xxxx ∧ xxx ∨ xxx" という形の文字列を検索しようと思っており、 whileやifなどで while(またはif)($hoge =~ /xxxx ∧/g){... という検索をしても文字列一致しません。 どうやら∧や∨という記号の文字を認識していない ようなのですが、どのように解決すればよいのでしょうか? もしかしたらJ-Codeなどを使って、文字コードを 変えなければならなかったりするのでしょうか? お返事お待ちしております。よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
$a = 'xxxx ∧ xxx ∨ xxx'; if( $a =~ /xxxx ∧/g ) { print "ok"; } を実行したところ、ok が表示されましたよ.(windows + active perl . Shift-jis ) で、多分テキストの "xxxx ∧ xxx ∨ xxx" の文字コードと、 ソースの文字コードが違うのではないかなと。 別のファイルから読み出した文字を正規表現なんかでチェックするなら、jcode や nkf なんかを使ってソースの文字コードにそろえるとかしなならんと思うでぇ。
その他の回答 (1)
- osamuy
- ベストアンサー率42% (1231/2878)
エンコーディングを変えて、「∧」「∨」のの16進ダンプをとってみると、以下のようになりました: EUC-JP=a2ca a2cb Shift_JIS=81c8 81c9 UTF-8=e288a7 e288a8 iso-2022-jp=1b2442224a1b2842 1b2442224b1b2842 上記例だと、iso-2022-jp以外なら問題なさそう。 ですので、 perl -e 'print "∧" =~ /∧/ ? "OK" : "NG", "\n";' ――がOKなら、if文の中とは別のところで、誤ってないか確認されてみては。
お礼
どうもありがとうございます。 下のレスの方のおっしゃるとおり、 読み出すファイルとソースの文字コードが 違っていたようです。 初歩的ミスですね・・・トホホ。 時間費やしていただいてありがとうございました。
お礼
どうもありがとうございます。 読み出すファイルとソースの文字コードが 違っていたようです。 読み出すファイル:EUC ソース:Shift-JIS だったのでソースをEUCにしたらうまくいきました。 初歩的ミスですね・・・トホホ。 時間費やしていただいてありがとうございました。