正規表現オブジェクト
| /パターン/ |
: てっとり早い |
| 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以外の文字。 |
任意の文字,メタ文字
ドット
バックスラッシュを使う
スペースとか,タブとか,改行とか,改頁とか
| \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回の繰り返し |
選択
最短マッチ
よくわかんない
「*」「+」は可能な限り長い部分にマッチする。
| *? |
: 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