2019-06-02
はじめての正規表現
.
一般的な正規表現
.: 任意の 1 文字\には 2 つの場合がある- エスケープする場合:
\.とすると、.がメタ文字ではなくてただの文字だよ、と表現する。 - あとにつづく文字と組み合わせて 1 つの文字種を表現する場合
\d: 数字、\w: 文字、\s: スペース。それぞれ大文字で「それ以外」を表す。
- エスケープする場合:
量指定子
{3}: 3 文字の繰り返し、{3,5}: 3 文字以上 5 文字以下の繰り返し、{3,}: 3 文字以上の繰り返し。?:{0,1},+:{1,},*:{0,}- 量指定子を用いた場合、デフォルトでは一番長い文字列が結果となる。一番短い文字列を得たい場合は、量指定子の後ろに
?をつける。
^: 行頭、$: 行末,\b: 単語の境界(hoge|fuga): hoge または fuga文字クラス(
[])[abc]: a または b または c、[^xy]: x と y 以外の 1 文字([の直後に^がくる場合のみ否定の意味になる)、[a-z]: 文字コード上で a から z の範囲にあるどれか 1 文字- 地のエスケープすべき文字は異なるので注意
後方参照
- 正規表現のそれ以降において
\1,\2で表現できる。
- 正規表現のそれ以降において
キャプチャ
- 検索文字列で
()で括った内容を、置換文字列において$1,$2で表現できる。
- 検索文字列で
正規表現
String# =~ regexpでマッチすればマッチした文字の位置を整数で返し、マッチしなければ nil を返す。String# !~ regexpはマッチしなければ true を、マッチすれば false を返す。\Aは文字列の先頭を、\zは文字列の終端を表す。String#scan(regexp)はマッチした文字列を配列にして返す。