• ベストアンサー

正規表現で全角スペースと誤認

OS:solaris8 perlのver:5.8.6 perlで、”食器洗い乾燥機|0”という文字列に対し、 空白文字(半角スペース、タブ、改行、全角スペース) が含まれているかを検査しているのですが、 空白文字有りとなってしまいます。 恐らく文字コードの問題だと思うのですが、 詳しくないため、解決方法が分からないでいます。 どのようにしたら解決できるでしょうか? require "jcode.pl"; としているので、jcodeのモジュールで 解決できないでしょうか? 文字コードはEUCです。 以下はソースです。 # 空白文字(半角スペース、タブ、改行、全角スペース)が #入力されていないかチェック $data = "食器洗い乾燥機|0"; if ($data =~ /\s|(?:\xA1\xA1)/) { #含まれている場合 } よろしくお願いします。

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.1

その問題の原因と解決方法が、下記のページで詳しく紹介されています。

参考URL:
http://www.din.or.jp/~ohzaki/perl.htm#JP_Match
stay_gold
質問者

お礼

修正・テストする時間がなかったため、 「|」を「|」に置換(全角⇒半角)することで 対応しました。 参考URLのやり方は 次回試してみます。 ご返信ありがとうございました。

その他の回答 (1)

  • kabaokaba
  • ベストアンサー率51% (724/1416)
回答No.2

5.8ならjcode.plは不要で use encoding qw/euc-jp/; としておけば,以前のjperlと 同等の動きをするはずです. jcode.plの提供する関数を使ってる場合は 読み込んでも問題ないとは思います #5.8のunicode関係の書籍って #なかなかないんですよね

関連するQ&A

専門家に質問してみよう