LoginSignup
4
3

More than 5 years have passed since last update.

ちょっと高度な正規表現を Ruby で試してみました

Posted at

概要

最近の正規表現 (PCRE) はいろいろ拡張されていて、以前では考えられなかったほど高機能になっています ・・・

ということを最近になって知ったので、近年(?)導入された新しい機能を中心に、いろいろ試した結果をメモしました。

Ruby 1.9.3 と Ruby 2.1.5 を使いましたが、試した範囲では、両者に違いはないようでした。

このあたりの拡張仕様は、呼び出し元の言語やバージョンによっても実装レベルや細かい仕様が異なるため、以下はあくまで Ruby の場合、他の言語 (C#, Java Script, php, ...) でも似たようなことができることも、できないこともある、という方向でご理解ください。

目次

  • フリーフォーマット / /x による正規表現の分かち書き

    • 文字クラスの中の # や空白はエスケープの必要がない
  • 名前付きグループ (?<name> )

    • MatchData へのインデックスは Symbol でも良い
    • 名前付きグループによるキャプチャを通常通り数値で参照することも可能
    • 名前無しグループはキャプチャしなくなる
    • 正規表現中では名前付きグループを数値で後方参照できない
    • 名前付きキャプチャの例
    • 同じ名前が複数回現れるときは最後のキャプチャを返す
    • 複雑な文字列を要素に分解
  • 相対的な後方参照 \k<-n>

    • 正規表現を結合するときに便利
    • MatchData へも負のインデックスを与えられる
  • 正規表現自体を後方参照 \g<-n>

    • サブルーチンのように使えます
    • 正規表現が複数回呼ばれたときの内部キャプチャ
    • 正規表現の再帰呼び出し
  • 条件付き正規表現 (?(n) )

    • 代替案

本文はこちらです

4
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3