正規表現::Ruby

正規表現オブジェクト

/パターン/ : てっとり早い
Regexp.new(str) : クラスメソッドを使って
%r(パターン) : 「/」を文字に使いたい
%rはいろんなカッコが使える。
「%r< >」「%r| |」「%r! !」

マッチング

正規表現 =~ 文字列
マッチしたら,マッチする文字の始まりのインデクスを返す。
マッチしないならnil。

オプション

/パターン/オプション
/^abc$/ei
i : アルファベットの小文字と大文字の違いを無視する。
x : 正規表現内の空白と,「#」の後ろの文字を無視。コメントが書ける
m : 「.」が改行文字にもマッチするようになる

文字コードとか
s : Shift_JISとしてマッチ
e : EUC-JPとしてマッチ
u : UTF-8としてマッチ

パターン

行頭,行末

行頭: ^
行末: $
^ABC : 行頭にABC
ABC$ : 行末にABC

範囲指定とか

[ABC] : A or B or C
[A-Z] : AからZまでのアルファベットの大文字。
[A-Za-z] : AからZまでと,a-zまで。
[^ABC] : A, B, C以外の文字。

任意の文字,メタ文字

ドット
. : 任意の一文字
^...$ : 3文字の行

バックスラッシュを使う

スペースとか,タブとか,改行とか,改頁とか
\s : スペース,タブ,改行,改頁
\d : 0から9までの数字
\w : 英数字
\A : 文字列の先頭,行頭ではない
\z : 文字列の末尾,行末ではない

繰り返し

繰り返し。*, +, ?
A* : Aの0回以上の繰り返し
A+ : Aの1回以上の繰り返し
A? : Aの0回または1回の繰り返し

複数文字列の繰り返し,選択

複数文字列の繰り返し
(123)* : 123の0回以上の繰り返し
(abc)+ : abcの1回以上の繰り返し
(1bz)? : 1bzの0回または1回の繰り返し

選択
(ABC|DEF) : ABCまたはCDF

最短マッチ

よくわかんない
「*」「+」は可能な限り長い部分にマッチする。
*? : 0回以上の繰り返しのうち最短の部分
+? : 1回以上の繰り返しのうち最短の部分

キャプチャ

正規表現内の「( )」で囲まれた部分にマッチした文字列を
$数字
の形の変数で取り出せる。
/(.)(.)(.)/ =~ "abc"
とすると,$1 = "a", $2 = "b", $3 = "c" となる

変数に入れたくないパターンがあるとき

「(?: )」を使う。
> /(.)(\d\d)+(.)/ =~ "123456"
> p $1, $2, $3
"1"
"45"
"6"
> /(.)(?:\d\d)+(.)/ =~ "123456"
> p $1, $2, $3
"1"
"6"
nil
最終更新:2011年10月19日 17:53