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

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

関連記事

Rails pluginを使ったgemの作り方[2](rails組み込み編)

概要 みなさんこんにちはcandleです。前回に引き続き、gemの作成をやっていきましょう。 今回はgemを作成したら、それをrailsプロジェクト上で読み込み、動作テストをするところをやります。 前 …

wordpress skeletonを使った開発環境の構築

はじめに みなさんこんにちはcandleです。wordpressは大変便利なのですが、いまいちgitで管理するのが難しいものです。 というのも、wordpress全体をgit管理対象にしてしまうと、w …

emacsでplantUMLをplantuml-modeを使って作成する

Autumn leaves on wood table 概要 みなさんこんにちはcandleです。今回はplantUMLをサポートするemacsのplantuml-modeを導入して使ってみましょう。 …

Mysqlテーブルの照合順序を変更する

概要 みなさんこんにちはcandleです。今回はテーブルの照合順序を変更する方法を行います。 この方法はやっても、mysqlクエリー1行ですみます。早速やりましょう。 テーブルの照合順序を変更する 次 …

reactで最もシンプルなドロップダウンメニューを作成

概要 みなさんこんにちはcandleです。今回はreactで最もシンプルなドロップダウンメニューを作ってみたいと思います。 前提 Reactの知識がある 準備 以下のコマンドでreactプロジェクトを …


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