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の多対多リレーションでcounter culture を使用する

概要 みなさんこんにちはcandleです。 今回は多対多のリレーションが貼られているrailsアプリケーションで、counter cultureを使ってレコード数を数えてみたいと思います。 以下のよう …

pythonのfabricでファイルを分割しfabfileに読み込む方法

概要 皆さんこんにちはcandleです。今回はfabricで分割したpythonファイルを読み込んでみましょう。 fabricはfabfile.pyというファイルに実行したいコマンドを書くのですが、 …

phpとmysqlでアカウント管理する時のテストユーザーのパスワードの暗号化はmysqlのsha1でもできる

by brewbooks 概要 みなさんこんにちはcandleです。最近はphpでサービスを書いたりしています。その中でテストユーザーのアカウント管理でパスワードを暗号化してデータベースに収めています …

sphinxでpythonのクラスや関数のドキュメントを自動生成する

概要 みなさんこんにちはcandleです。今回はpythonのSphinxを使ってクラスや関数の説明を自動生成します。 前提 Python3を使って説明しますが、おそらくpython2でも動くと思いま …

basscss v8以降にv7以前のスタイルを追加する(自分用メモ)

概要 みなさんこんにちはcandleです。今回はbasscssのv8でかなりデフォルトのスタイルから削除されてしまったスタイルをインポートします。 v7以降からbasscssのスタイルはかなり分割され …


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