読者です 読者をやめる 読者になる 読者になる

hotoolong's blog

Railsやvimや気になったことを綴ってます

単一の文字列中から文字列を探すときは正規表現は使わない

Ruby

文字列から文字列を探すときには正規表現をよく使ってしまいます。

Effective Rubyには =~ などのPerl風機能を避けようということが書かれています。
RuboCopでは逆に=~を使うように促されてしまってなんのこっちゃと思っていたのですが、
ruby-style-guideの内容を見てると
単一の文字列中から文字列を探す場合は正規表現を使わないというような記述がありました。
ruby-style-guide/README.ja.md at japanese · fortissimo1997/ruby-style-guide · GitHub

string['text']

と書けば良いようです。
こんなこともできるのですね。

文字列の添字に直接正規表現を入れることもできるようで、

match = string[/regexp/]             # マッチした内容が得られる
first_group = string[/text(grp)/, 1] # キャプチャグループの内容が得られる
string[/text (grp)/, 1] = 'replace'  # string => 'text replace'

こんなこともできるようです。
便利ですね。

Effective Ruby

Effective Ruby

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版