hotoolong's blog

プログラムのことやエンジニアリングに関することを記事にしています。

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

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

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'

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

www.shoeisha.co.jp

www.oreilly.co.jp