文字列の間を正規表現で抜き出したい


文字列の間の抜き出しに手間取ったので、メモ。

経緯

文字列の前後が固定で、間にある文字を抜き出す

例:
下記を連結したファイル名や定数からサービス名部分を抜き出したい

COMPANY_SERVICE_OPTION
※命名規則がサービス会社_サービス名_OPTION

パターン1

こちらを参考にして取得


"COMPANY_SERVICE_OPTION".slice(/COMPANY_(.+)_OPTION/)
puts $+

SERVICE

「$+」はRubyの組み込み変数で他にもいろいろとある模様
しかしながら、非推奨との記載もちらほら見かけたため下記パターン2を使用した。

パターン2

こちらのgsub記載を参考にして取得


puts "COMPANY_SERVICE_OPTION".gsub(/COMPANY_(.+)_OPTION/,'\+')

SERVICE

パターン3(追記)

scivolaさんからコメントいただいた方法


"COMPANY_SERVICE_OPTION".match(/COMPANY_(.+?)_OPTION/)[1]

SERVICE

以上です。
いいねやQiitaやTwitterのフォローいただけると励みになります!
他にも方法がありましたら、コメントお待ちしております。
宜しくお願いします〜

参考

正規表現で間の文字列を抜き出したい
[Ruby] Kernelの特殊変数をできるだけ$記号なしで書いてみる
String - Rubyリファレンスマニュアル