Regexp

今まで知らなかった分をまとめる。

  • \b 語境界 - \wと\Wの間にマッチ
  • \B 非語境界
  • 量指定子の? *? +? {m,n}? ?? 等、最短一致を示す。
  • (?: ) 後方参照を伴わないグループ化
  • (?= ) 先読み(lookahead) "foobar"[/foo(?=bar)/] => foo
  • (?! ) 否定先読み "foobaz"[/foo(?!bar)/] => foo

正規表現に関連したグローバル変数

  • $& 最後にマッチした文字列
  • $` 最後にマッチした文字列より前の文字列
  • $' 最後にマッチした文字列より後の文字列
  • $~ 最後のマッチに関するMatch Data オブジェクト $~.to_a で配列を返す。*めっちゃ使えそう*

MatchData オブジェクト

  • begin(n) n 番目の部分文字列先頭のオフセットを返す。
  • end(n) n 番目の部分文字列終端のオフセットを返す。
  • offset(n) n 番目の部分文字列のオフセットの配列 [start, end] を返す。
  • select { ... x} self.to_a.select { ... } と同じ。

知らずに損するって言うのはまさにこの事だ。