概要
みなさんこんにちは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
まとめ
正規表現は分かってしまえばその通りだなと思うのですが、導き出すまでには結構苦労しますよね。