Rubyの正規表現方法

RubyRuby

そもそも正規表現とは?

正規表現とは、わかりやすく定義すると、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを検出するための表現方法です。

HTML

sub

subメソッドは、文字列の指定した部分を別の文字列に置き換えるためのメソッドです。
第1引数に置き換えたい文字列を指定し、第2引数に変換後の文字列を指定します。また、操作したい文字列は/で囲みます。

sub

match

matchとはStringクラスのメソッドです。

引数に指定した文字列が、引数で指定した正規表現に合致するかをチェックするためのメソッドです。

指定した文字列がMatchDataというオブジェクトが戻り値で得られます。また、含まれていない場合は、戻り値としてnilが得られます。

macth

MatchData

マッチした文字列はまず、MatchDataという種類のオブジェクトで返されます。MatchDataから実際にマッチした文字列などを取り出したい場合は、配列から最初のデータを取り出す時と同様の形で取り出すことができます。

MatchData

gsub

gが意味するのはグローバルマッチという言葉です。

文字列内に指定した文字が複数含まれている場合、その全てを置換するという意味になります。
subとの違いはパターンにマッチしたも全てを置換することです。subは最初だけです。

gsub

基本的な正規表現一覧

.任意の1文字 にマッチします。
+直前の文字が 1回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
*直前の文字が 0回以上 繰り返す場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
?直前の文字が 0個か1個 の場合にマッチします。
最長一致。条件に合う最長の部分に一致します。
+?直前の文字が 1回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
*?直前の文字が 0回以上 繰り返す場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
??直前の文字が 0個か1個 の場合にマッチします。
最短一致。条件に合う最短の部分に一致します。
|いずれかの条件 (OR条件) として使われます。
\直後の正規表現記号を エスケープ します。
[…]角括弧に含まれるいずれか1文字にマッチします。
[^…]角括弧に含まれる文字以外にマッチします。
(…)文字を1つのグループにまとめることができます。
{n}直前の文字の桁数を指定できます。
{n,}直前の文字の最小桁数のみ指定できます。
{n,m}直前の文字の最小桁数と最大桁数を指定できます。
最長一致。条件に合う最長の部分に一致します。
{n,m}?直前の文字の最小桁数と最大桁数を指定できます。
最短一致。条件に合う最短の部分に一致します。

                                             定義済みの正規表現

文字説明
\tタブ
\r改行。CR(Carriage Return:0x0D)
\n改行。LF(Line Feed:0x0A)
\dすべての数字
\Dすべての数字以外の文字
\s垂直タブ以外のすべての空白文字
\Sすべての非空白文字
\wアルファベット、アンダーバー、数字
\Wアルファベット、アンダーバー、数字以外の文字

特定の位置関係の正規表現

文字説明
^直後の文字が行の先頭にある場合にマッチします。
$直前の文字が行の末尾にある場合にマッチします。
\<単語の先頭にマッチします。
\>単語の末尾にマッチします。
\b単語の先頭か末尾にマッチします。
\B単語の先頭か末尾以外にマッチします。
\Aファイルの先頭にマッチします。
\zファイルの末尾にマッチします。
\G直前の一致文字列の末尾にマッチします。

                                    置換文字列で使える正規表現

文字説明
\0一致した文字列全体に置換します。
\1 ~ \9一致した文字列の1~9番目に対応する文字列に置換します。
\l次の1文字を小文字に変換します。
\L…\E挟まれた文字列を小文字に変換します。
\u次の1文字を大文字に変換します。
\U…\E挟まれた文字列を大文字に変換します。 

コメント

タイトルとURLをコピーしました