• ベストアンサー

正規表現で一致しない(否定)場合の書き方

正規表現で特定の文字列パターンに一致しない(否定)場合の書き方 ものすごく初歩的な質問なのですが、正規表現での否定の仕方がわかりません。 例えば、以下のように書いた場合は「第1回」や「第10回」などの文字列が一致しますが、 逆にこれらの条件に一致しないようにしたい場合はどのように記述すればよろしいのでしょうか? 第[1-9]+回

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

1回と10回を除くという条件なら、たとえばこんな感じ /第(?:[02-9]|1[1-9]|[2-9][0-9]|[1-9][0-9]{2,})回/ 一桁の時は1以外、 二桁の時は10の位が1の時は1の位が0以外か10の位が1以外、 もしくは三桁以上 ただし、こんな無駄なことをするならマッチした数値だけ抜き取って その数値が1か10以外・・という処理をした方が楽

matsu79
質問者

補足

確かに正規表現で行うと無駄かもしれませんね。 別の方法も考えてみるのもいいと思いました。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

プログラムでやるなら、 if 「正規表現"第[1-9]+回"にマッチ」 = 失敗 then やりたい処理 end if みたいにするのが楽でしょう。 正規表現でなんでもやろうと思わないことです。 ちなみに、 第[1-9]+回 では「第10回」にマッチしません。

matsu79
質問者

補足

確かに「第[1-9]+回」では「第10回」にはマッチしませんね。 間違っていました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「正規表現」がそれを使うプログラムによって異なることはご存知ですか?

matsu79
質問者

補足

正規表現でも環境によって色々と種類があるのですね。 知りませんでした。

関連するQ&A