• ベストアンサー

正規表現のマッチングパターン

WindowsXP、VB6.0にて勉強しております。 http://oshiete1.goo.ne.jp/qa4544122.html 上記質問に関連してなんですが、 パターンをどう記述して良いか分からず困っております。 行いたいのは、数字・A~Z(半角大文字アルファベット)・半角カタカナ以外の文字が文字列に含まれているかどうかなんですが、 "[^0-9]|[^A-Z]|[^。-゜]" というパターンではうまく行きませんでした・・・orz 「()」を使用し、 「"(ab)|(cd)|(ef)" は "ab" または "cd" または "ef" にマッチ」 というのは分かったんですが・・・。 有識者の方、教えていただけませんか? よろしくお願いいたします。

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

  • ベストアンサー
回答No.1

"[^0-9A-Z。-゜]"でOK(半角のマルです) なぜ質問の正規表現がダメかというと、 対象文字が"A"だった場合、[^A-Z]の条件はマッチしなくても [^0-9]や[^。-゜]の条件がマッチしてしまうため誤検出となるのです。

ya-cha
質問者

補足

ご回答ありがとうございます。 "[^0-9A-Z。-゜]" としてみたんですが、 対象文字列に全角ひらがな(「あ」等)を入力した場合にひっかからないんですが、何が原因なのでしょうか?

その他の回答 (1)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

メタ文字'-'をエスケープすればOK "[^0-9A-Z。\-゜]"

ya-cha
質問者

お礼

ご回答ありがとうございます。 "[^0-9A-Z。-゜]"で行いたい処理が出来ました! 他の箇所でも、あるパターンを作成しなければなりませんが、そちらは自分で頑張ってみようと思います。 本当にありがとうございました!

関連するQ&A