重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

正規表現で特定の文字列(2文字以上)に一致しない場合の条件指定は可能でしょうか?
例えば、[^CEG] と指定すると文字の「C」、「E」、「G」以外の文字にマッチするということになりますが、
複数の文字で構成された文字列で同じようなことをする方法はないのでしょうか?

例えば、「Japan」を含まないなどの指定方法を知りたいです。
以下の場合、文字列の途中に含まれている「Japan」を上手く見つけることができ、
1を除外し2と3だけがマッチする正規表現の指定方法が知りたいです。

1. 「この国はJapanです。」
2. 「この国はChinaです。」
3. 「この国はUSAです。」

A 回答 (3件)

そういう正規表現はありません。



普通は、正規表現を使う言語側で、「(Japanにマッチする)でないとき」という処理をします。


あるいは、Perl互換に拡張された正規表現であれば、否定先読みを使って、

この国は(?!Japan)

で、2と3にマッチします。ただし、否定先読みとは何なのかを理解していないと応用が利きませんよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
Not指定できるような書き方は元々存在しないのですね。

お礼日時:2014/06/15 20:10

#2はウソです、忘れてください

    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/15 20:11

あまり頭のいい方法ではありませんが



/この国は(.+(Japan)*.*|.*(Japan)*.+)です。/
とするといけるかもしれません。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2014/06/15 20:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!