rubyオブジェクト向け言語学習4日目

1722 ワード

今日はrubyの基本的なタイプ、正規表現を勉強し続け、その内容は非常に多いです.
六、正規表現
正規表現とは、一般的に文字列と一致するために使用されるパターンを指し、通常、電話番号、メールボックスなどの文字列は同じパターンを持っているため、同じタイプの文字列の仕訳、置換、一致作業に最適であり、rubyではRegexpオブジェクトに属します.
前述したいくつかのタイプと同様に、ここで正規表現は基本的なタイプであり、rubyは固定されたフォーマットで書くだけで文字列を正規表現オブジェクトに作成します.正規表現には2つの作成方法があり、1つ目は2つ/中間に書きます.
 /abc/ #             /\s*[a-z]/ #     

2つ目の書き方は、前に%rを付け、後ろにペアの記号({},[],<>など)を付け、内容を記号に書きます.
 %r{abc}    #      
%r<\s[a-z]>  #     
 %r[\s+[a-z]] #     

パターンというのは、上のsのように空白文字(スペースもtabタブも空白文字)を表す文字があるからです.
中括弧に書かれた[a-z]は、aからzまでの任意の文字を指します.したがって/s[a-z]/は任意の前に空白文字の小文字を指すことができ、判断方法も簡単であり、=~で判断し、rubyでマッチングできればマッチングを開始した位置に戻り、マッチングできなければ空の値を返す.たとえば
/\s[a-z]/ =~ " a"  #    0
"g z" =~ /\s[a-z]/ #    1
/\s[a-z]/ =~ "ab"  #     

=~はマッチングオペレータであり,具体的なパターンが前であるか文字列が前であるかは関係ないが,必ず正規表現である.
正規にどれだけのパターンを表す文字があるのか、どのように説明すればいいのか、大まかに列挙します.
モード中.,|,(,),[,],{,},\,+,^,$,*,?すべて特殊な意味があって、これらを除いてその他の文字はすべてそれ自身にマッチして、これらの特殊な文字をそれ自身にマッチさせるには前にエスケープ文字,例えば:.,|,+を加える必要がありますなど.
また、エスケープ文字には、次のような特殊な意味があります.
dは0~9の数字を表します.
Dは、数字以外の任意の文字を表します.
sは空白文字(通常はスペース、タブ、改行など)を表します.
Sは空白文字以外の文字を表す
wはaからzの大文字と小文字、0から9の数字を表します
Wはアルファベットと数字以外の任意の文字を表します
特殊文字の意味
・ドットマッチング改行文字r(つまり、折り返しを押す文字)以外のすべての文字
|は、x|yのような2つの選択肢を表し、xまたはyに一致する
[]は、[abc]、マッチングa,b,cのいずれかの集合を表す.
^一致文字列の開始位置^a文字列はaで始まる必要があります.
$一致文字列の終了位置
*,+,? 文字の後に付いて、文字の繰り返し可能な回数*(0回または複数回)、+(1回または複数回)、を表します.(0回または1回)
{}は文字の繰り返し回数を表すこともできますが、*,+,?より具体的には、{n,m}は最小n回、最大mc回、{n,}は最小n回、{n}はn回のみを表す.
()はグループを表し、括弧内に現れる文字を全体とし、グループの役割は優先度を区別する以外に、各グループは個別の正則的なマッチングであり、そのマッチング結果は$1...9でグループの一致結果を取得します.