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の画像のアップロード先をcarrierwaveとfogを使ってS3にする

概要 railsのckeditorはデフォルトでrailsのuploadsフォルダにアップロードしますが、 それだとサーバの容量を取ってしまうので、画像のアップロード先をS3に上げてみたいと思います。 …

railsのscaffoldでremote formで送信後jsonを取得する

概要 みなさんこんにちはcandleです。 今回はrailsのformをremoteを使ってajaxした時に、 サーバに送った値をjavascript側で受け取る方法を紹介します。 ちなみに、私は下の …

railsのaws-sdk gemを使ってs3のフォルダ(folder)を削除する

概要 みなさんこんにちはcandleです。今回はs3にあるフォルダを丸ごとrailsのaws-sdk gemを使用して削除してみたいと思います。 実はこの方法を確立するまですごく四苦八苦しました。なん …

javascript + Reactでhtmlタグの削除と許可とXSS対策

概要 みなさんこんにちはcandleです。今回はReactで許可したhtmlタグだけを表示し、それ以外のタグは削除するプログラムを書いてみます。 注意、本来ユーザーなどが投稿した内容をそのまま表示させ …

Rails pluginでengineを使ったgemの作り方[6](config編)

概要 みなさんこんにちはcandleです。今回は前回に引き続き、gemの作成をやっていきます。 gemのconfigとは恐らく一般的に以下の様な状況の時に使う事になると思います。 例えば、gemのプロ …


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