• ベストアンサー

正規表現で、ある文字を含まない文字列のチェック方法について

正規表現で、ある文字(対象は複数)を含まない文字列をチェックしたいのですが、どうもうまくいかないので相談させて頂きます。 チェック対象文字(例:壱、拾、A、Z) 上記の文字以外のチェックは、 [^壱拾AZ]となるかと思いますが、 チェック対象文字を含まない文字列をチェックするためには、 どのような正規表現としたらよいのでしょうか? ご教授の程、よろしくお願い致します。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

正規表現は苦手なのですが… [^壱拾AZ]は「壱拾AZ」以外の文字という意味は正しいですが、対象文字列の全てが壱拾AZ以外の文字からなっているという表現にはなっていませんよね。 文字列内に「壱拾AZ」以外の文字が存在すれば、それにヒットするはずです。 >ある文字(対象は複数)を含まない文字列をチェックしたい の「ある文字」が「壱拾AZ」だとすればそのまま[壱拾AZ]でTestして、マッチしたら否、マッチしなければ正という判定をすればよいのでは? (これだと質問内容のすり替えかなぁ…) ちゃんと、文字列全体をマッチさせようとするなら、 ^[^壱拾AZ]*$ とでもなるのだろうか。(←自信なし) (ついでに、VBAの末尾の$は、なんだか動作がやや曖昧だった記憶があります↓。怪しいのは$でなくて?だったかな?) http://oshiete1.goo.ne.jp/qa4821264.html

small-ma
質問者

お礼

ご回答ありがとうございます。 早速試してみたところ、ご提示頂きました正規表現で うまく動作しそうです。 大変参考となりました。 ありがとうございます。

その他の回答 (1)

  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.2

こんにちは  質問がいまいち理解できてないのですが.. >上記の文字以外のチェックは、[^壱拾AZ]となるかと思いますが、 >チェック対象文字を含まない文字列をチェックするためには、  「上記の文字以外(の文字)」パターンを使って「上記の文字以外(の文字)で構成された文字列」のパターンを作りたいのですよね。  文字列なので1文字も文字列とすれば、「0回以上の繰返し」か「1回以上の繰返し」を使うとよいでしょう。 ●「0回以上の繰返し」 [^壱拾AZ][^壱拾AZ]* ●「1回以上の繰返し」(正規表現の実装の程度により使用不可もある) [^壱拾AZ]+

small-ma
質問者

お礼

質問の意図がわかりづらいにも関わらず、 ご回答頂きまして、ありがとうござます。 ご提示頂きました内容は、非常に参考となり、大変助かりました。 ありがとうございました。

関連するQ&A