ようへいの日々精進XP

よかろうもん

2018 年 03 月 03 日(土)

ジョギング

日課

  • お休み

鹿児島マラソン

  • 今回は車ではなくて新幹線で移動
  • 鹿児島は大雨で昨年の悪夢が頭をチラッとよぎる
  • 明日はとにかく, イイ感じで完走したい

夕飯

  • 壮行会的な母が色々と頑張って饗してもらった
  • 毎回, 本当に有難い

今日のるびぃ ~ メタ文字列とリテラル, メタ文字とエスケープ ~

ドキュメントを読んでメモしておく. 2018/03/06 時点での Ruby の最新版は 2.5.0 だけど, ここでは 2.1.0 のドキュメントを参考にする.

正規表現オブジェクト

/pat/
%r{pat}

上記のような正規表現リテラルRegexp.new で正規表現オブジェクトを取得することが出来る.

[1] pry(main)> /pat/.class
=> Regexp
[2] pry(main)> %r{pat}.class
=> Regexp
[3] pry(main)> Regexp.new('pat').class
=> Regexp

メタ文字列とリテラル

正規表現内で特別な機能を持つ文字列 (メタ文字列: meta string) と, 文字列そのものにマッチするような文字列 (リテラル: literal string) がある.

/京都|大阪|神戸/
  • 京都, 大阪, 神戸は「リテラル
  • | は「メタ文字」

メタ文字とエスケープ

メタ文字は以下のような種類があるが, メタ文字そのものをリテラルとしてマッチさせる為には \ を付与する (\\\ にマッチする)

( ) [ ] { } . ? + * | \

以下のように, メタ文字以外の文字でもメタ文字に続けて置くことで特別な働きをする場合がある.

/[a-z]/
/\Axyz\Z/

[a-z]\A\z はメタ文字となる.