- 締切済み
perlでの正規表現?文字コードの問題?
なぜ、全角Bがマッチするのでしょか? $sh ="B111\"; print "$sh\n\"; if($sh=~ /\A[あ,い,う,え,お,か,き,く,け,こ,さ,し,す,せ,そ,た,ち,つ,て,と,な,に,ぬ,ね,の,は,ひ,ふ,へ,ほ,ま,み,む,め,も,や,ゆ,よ,わ,ゐ,ゑ,を,ん,ぁ,ぃ,ぅ,ぇ,ぉ,ゃ,ゅ,ょ,が,ぎ,ぐ,げ,ご,ざ,じ,ず,ぜ,ぞ,だ,ぢ,づ,で,ど,ば,び,ぶ,べ,ぼ,ぱ,ぴ,ぷ,ぺ,ぽ]/){ print "ヒット\n\"; } print "処理終了\n\";
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- sakusaker7
- ベストアンサー率62% (800/1280)
回答No.1
身も蓋もない書き方をすればスクリプトが間違っているからです。 無用なカンマを別にして、なんの指定も前処理もなしにそのように 書いて期待通りにマッチするのは大昔のjperlくらいです。 Encode::decode を使うなどして、マルチバイト文字が バイトの並びでなく文字として認識されるようにしてください。