joppot

コピペで絶対動く。説明を妥協しない

プログラミング

Rubyで文字列に含んで欲しくないキーワードがある場合はマッチさせない正規表現

投稿日:


概要

みなさんこんにちはcandleです。今回はRuby主にruby on railsで文字列に含まれて欲しくないキーワードがマッチした場合は通らない正規表現を作りたいと思います。

これは例えばこのような場合です。「Bitcoin」とか「Bitcoin ~」いうワードはマッチしたいけど、「BitcoinCash」と「Bitcoin Cash」はマッチしたくない場合などです。

○ Bitcoin
○ Bitcoin Core
× BitcoinCash
× Bitcoin Cash

前提

なし

正規表現を書く

文字列に含んで欲しくないキーワードがある場合はマッチしない正規表現はこれです。

 /含んでいてほしいキーワード(?!含んで欲しくないキーワード)/

例えば、「Bitcoin」と「Bitcoin 〜」はok、「Bitcoin Cash」と「BitcoinCash」を弾きたい場合はこのようになります。|ORと\sスペース記号が組み合わさってます。

reg = /Bitcoin(?!Cash|\sCash)/

サンプルコードはこのようになります。

name1 = "Bitcoin"
name2 = "Bitcoin Core"
name3 = "BitcoinCash"
name4 = "Bitcoin Cash"

reg = /Bitcoin(?!Cash|\sCash)/

if name1 =~ reg
  p name1
end

if name2 =~ reg
  p name2
end

if name3 =~ reg
  p name3
end

if name4 =~ reg
  p name4
end

まとめ

正規表現は分かってしまえばその通りだなと思うのですが、導き出すまでには結構苦労しますよね。

スポンサードリンク

「為になったなぁ」と思ったら、シェアお願いします。

-プログラミング
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

ruby on railsのckeditorをdeviseを用いて複数人で投稿できるようにする

概要 みなさんこんにちはcandleです。今回はckeditorの複数人投稿機能をdeviseを用いてやってみたいと思います。ckeditorを使うと分かると思うのですが、誰でも画像のアップロードや削 …

ElastiCacheのmemcachedとEC2上のrailsとdalli-elasticacheを使ってキャッシュ管理する

概要 皆さんこんにちはcandleです。今回はaws上にあるElastiCacheというサービスを使って railsのキャッシュを管理したいと思います。 キャッシュというのはwebサービス上でよく使う …

Mysqlのdatetime型とtimestanp型で保存されているデータを年月日だけを指定して任意の日にちのデータを取得する方法

概要 みなさんこんにちはcandleです。今日はmysqlのdatetime型とtimestanp型におさめられているデータの取得を紹介します。 datetimeやtimestanpは多くの場合下のよ …

Chart.js 2.0でy軸の最大値(scales max)と最小値を設定する

概要 みなさんこんにちはcandleです。今回はChart.js2.0でy軸の最大値、最小値を設定する方法を紹介します。 Chart.js 2.0では特に指定しないと自動的に、y軸の最大値を設定してく …

railsのcoffee scriptをurl判定をして実行をする方法

概要 みなさんこんにちはcandleです。 今回はcoffeescriptを任意のURLで実行する様にする関数を作ります。 というのはrailsは最終的にassetspiplineでjavascrip …


ベンチャー企業のCTOをやってます。大学時代にプログラミングを始め、javaから入門し、C++へて、PHPへと進み、会社ではRailsを使用。自動化が大好きなプログラマー