dポイントプレゼントキャンペーン実施中!

正規表現で特定の文字列パターンに一致しない(否定)場合の書き方

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

第[1-9]+回

A 回答 (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以外・・という処理をした方が楽

この回答への補足

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

補足日時:2014/06/11 22:08
    • good
    • 1

プログラムでやるなら、



if 「正規表現"第[1-9]+回"にマッチ」 = 失敗 then
やりたい処理
end if

みたいにするのが楽でしょう。
正規表現でなんでもやろうと思わないことです。


ちなみに、 第[1-9]+回 では「第10回」にマッチしません。

この回答への補足

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

補足日時:2014/06/11 22:02
    • good
    • 0

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

この回答への補足

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

補足日時:2014/06/11 21:59
    • good
    • 0

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