Rubyの正規表現には、Perlの「!〜」のような一致しない演算子がありますか?


91

Rubyの正規表現!~にperlと同じようにnot match演算子があるかどうか知りたいだけです。使い勝手が悪いの(?!xxx)(?<!xxxx)xxxパーツに正規表現パターンが使えないので。


8
あなたがしなければならなかったすべては、起動してirbそれを試してみることでした。おそらく、SOの質問を投稿するよりも速いでしょう。
Mark Thomas

32
しかし、 'ruby not match'を
ググって

3
行き詰まり、グーグルでこの答えを見つける前に、私はしばらく実験しました(うまくいきました)。質問をするために誰かに馬鹿にしないでください。
Jonathon Nordquist

2
彼はそれを最適とは言いませんでした。彼が言うつもりだったと思うのは、「起動irbして試してみることを忘れないでください。SOの質問を投稿するよりもおそらく速く、一般的に物事をテストする絶好の機会です。」それは方法です、私はとにかく、それを聞きました。
user2066657

回答:


155

はい:!~正常に動作します。おそらく、のドキュメントページにRegexpないため、動作しないと考えていました。それにもかかわらず、それは動作します:

irb(main):001:0> 'x' !~ /x/
=> false
irb(main):002:0> 'x' !~ /y/
=> true

8
!~Objectの下に記載されています。
TončiD.

3
ruby 2.4には、やや優れた構文もあり、RegExp#match?簡単に無効にすることができます。よると、リリースノート、それはよりもさらに少ない割り当てない!~
panmari

6

AFAIK(?!xxx)がサポートされています:

2.1.5 :021 > 'abc1234' =~ /^abc/
 => 0
2.1.5 :022 > 'def1234' =~ /^abc/
 => nil
2.1.5 :023 > 'abc1234' =~ /^(?!abc)/
 => nil
2.1.5 :024 > 'def1234' =~ /^(?!abc)/
 => 0

これは下位レベルのソリューションです。この方法で正規表現を変換するのは必ずしも簡単ではありません。一方、このソリューションはトップレベルのプログラミング言語に依存しません;)
Konstantin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.