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