Rubular
Rubyで正規表現を作るためのテストに役立つサイトです。作った正規表現をその場で実行して動作を確認できます。
https://rubular.com/
Regexp
正規表現オブジェクトです。
Rubyのバージョンの差異に注意
Rubyはバージョンによって正規表現の仕様に微妙に差異があります。
Ruby2.6であれば下記に詳しく正規表現の仕様が記載されているので確認するようにしましょう。
https://docs.ruby-lang.org/ja/2.6.0/doc/spec=2fregexp.html
正規表現の文法
=~
マッチした場合は「一致した箇所」、マッチしなかった場合は「nil」が返ります。条件分岐の条件にも使えます。
1 |
'文字列' =~ /正規表現/ |
!~
「=~」とは逆のような感じでマッチしなかったらtrueを返し、マッチしたらfalseを返します。
matchメソッド
キャプチャ()ごとに分解して文字列を抽出したりすることができます。
1 2 3 4 5 6 |
nengetu = '1987年7月29日' m = /(\d+)年(\d+)月(\d+)日/.match(nengetu) puts m[0] # 全体を表示(1987年7月29日) puts m[1] # キャプチャの1番目を表示(1987) puts m[2] # キャプチャの2番目を表示(7) puts m[3] # キャプチャの3番目を表示(29) |
下記のようにシンボルで名前を指定してキャプチャの結果を取得することができます。
1 2 3 4 5 6 |
nengetu = '1987年7月29日' m = /(?<nen>\d+)年(?<getu>\d+)月(?<hi>\d+)日/.match(nengetu) puts m[0] # 全体を表示(1987年7月29日) puts m[:nen] # キャプチャの1番目を表示(1987) puts m[:getu] # キャプチャの2番目を表示(7) puts m[:hi] # キャプチャの3番目を表示(29) |
Stringクラスのメソッド
Stringクラスには正規表現に対応した便利メソッドがいくつかあります。
scanメソッド
正規表現にマッチした文字を配列で返してくれます。
1 |
'あ い う'.scan(/\S/) |
上記例で言えば['あ','い','う']という配列が戻り値として返されます。
[]
文字列から正規表現にマッチした部分を抜き出すことが可能です。
1 |
文字列[/正規表現/] |
splitメソッド
splitに正規表現を渡すとマッチした文字列を区切りにして配列を作成することが可能です。(もちろん、カンマ等の正規表現ではない単純な文字のみを渡すことも可能です。)
1 |
文字列.split(/正規表現/) |
gsubメソッド
第一引数でマッチした文字を第二引数の文字に置き換えることが可能です。
1 |
文字列.gsub(第一引数,第二引数) |
この記事へのコメントはありません。