はじめに
今回はプログラミングにおける正規表現について紹介していこうと思います!
正規表現とは
正規表現とは、文字列の一部分を抽出・置換したり、文字列が制約を満たしているかを調べるための表現方法です。
文字列に特定の文字が含まれているかを確認することや、特定の文字を取り除くなどの操作を行うための技術が正規表現です!
正規表現は様々な言語で同じようなコードを表すことができるので、別言語間でも共有することができます!
正規表現を表現するメソッド
subメソッド
subメソッドは、文字列の指定した部分を別の文字列に置き換えるためのメソッドです!
第1引数に置き換えたい文字列を指定し、第2引数に変換後の文字列を指定します!
操作したい文字列は/で囲みます!
irb(main):001:0> str = "りんごを食べる" => "りんごを食べる" irb(main):002:0> str.sub(/りんご/,"みかん") => "みかんを食べる"
こんな感じです!
matchメソッド
matchメソッドは、引数に指定した文字列がメソッドを使用した文字列に含まれているか否かをチェックするためのメソッドです!
含まれている場合は、指定した文字列がMatchDateというオブジェクトが戻り値で得られます!
含まれていない場合は、戻り値としてnilが得られます!
irb(main):001:0> str = "Hello, World" => "Hello, World" irb(main):002:0> str.match(/Hello/) => #<MatchData "Hello"> irb(main):003:0> str.match(/Great/) => nil
こんな感じです!
MatchDate
Matchメソッドでマッチした文字列はまず、MatchDateから実際にマッチした文字列などを取り出したい場合は、こんな感じになります!
irb(main):001:0> str = "Sakana Suisan" => "Sakana Suisan" irb(main):002:0> md = str.match(/Sakana/) => #<MatchData "Sakana"> irb(main):003:0> md[0] => "Sakana"
特定の文字を取り除く
特定の文字を取り除く場合は、「特定の文字を空文字に置換する」と考えます!
置換するメソッドはsubメソッドでは最初のハイフンには置換されません!
そのため、gsubメソッドを用います!
gsub
文字列内に指定した文字が複数含まれている場合、その全てを置換するという意味になります。
subの場合は、最初にマッチした1つだけが置換されます!
制約の設定方法
[a-z]
角括弧[]を使用することで角括弧で囲まれた文字のうちいずれか1つがマッチするかをチェックしています!
また、ハイフンを使用することで範囲を設定することができます!
\d
これのdは数字を表します!
数字を表すdのような文字を特殊文字と言います。
特殊文字を使用する場合は直前に\を記述するというルールが存在しています!
{n, m}
直前の文字を少なくともn回、多くてもm回出現するものにマッチすることを確認します!
したがって、文字列の制約を追加することができます!
i
最後にiオプションを加えることで、大文字・小文字を区別せずに検索できます!
irb(main):001:0> 'Cat'.match(/cat/i) => #<MatchData "Cat">
みたいな感じです!
.
ハイフン、ピリオドなど含めた全ての英数字において、どの1文字にもマッチします!
irb(main):001:0> 'hige'.match(/./) => #<MatchData "h">
+
直前の文字が1回以上の繰り返しにマッチします!
irb(main):001:0> 'aaaabb'.match(/a+/) => #<MatchData "aaaa">
また、頭文字に@をつけることによって、@から始まり、何かしらの文字が1回以上繰り返すものにマッチという意味になります!
コメント