はじめに
私は現在、フィヨルドブートキャンプで、未経験からプログラミング学習をしているものになります。
この記事は、自分自身が学習したことをまとめ、アウトプットすることを目的として書いていますので、間違いがある可能性がありますのでご注意ください。
rubyで正規表現を使ってURLを抜き出す際にスラッシュが多くてみにくい問題
学習しているプラクティスの中で、文字列中の特定のURL(http://localhost:3000/reports/日報のid
)を抜き出す場面がありました。
String#scan (Ruby 3.2 リファレンスマニュアル)メソッドを使ってhttp://localhost:3000/reports/日報のid
を抜き出すコードは以下のようになります。
content.scan(/http:\/\/localhost:3000\/reports\/\d+/)
これでも実現はできるのですが、どうしても/(スラッシュ)
が多くなるのでその都度、エスケープの\(バックスラッシュ)
が多くなりとても見にくいです\(^o^)/
%rを使った書き方にするととても見やすい
書式は以下の通りです。
%r{パターン}
これを先ほどの例に当てはめると以下のようになります。
content.scan(%r{http://localhost:3000/reports/\d+})
これで非常に見やすくなりました。
他の記述パターン
%r
で始まり、対になった区切り文字で文字の集合を囲うことで文字列を作成できるので以下のような記号を使うこともできます。
%r[パターン] %r(パターン) %r<パターン> %r|パターン| %r!パターン! %r*パターン*
逆に区切り文字に使用した文字がパターン内で現れる場合にはエスケープが必要な点には注意が必要です。パターン内で使用されない区切り文字を使うのが良さそうです。