0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現の理解 [Rubyチェリー本 6章まとめ]

Posted at

この章では、Rubyにおける正規表現の扱いが記載されています。
この章の前に、著者の @jnchito さんの正規表現に関するQiita記事を参考にすると、とても理解しやすいと思います。
この記事では、特に参考になった部分を抜粋します。

Rubyにおける正規表現と文字列の比較

=~ を扱う。
正規表現と文字列がマッチした場合は、文字列のマッチした位置が返る(真)。
マッチしなかった場合はnilが返る(偽)。

'123-4567' =~ /\d{3}-\d{4}/
#=> 0
'99-999' =~ /\d{3}-\d{4}/
#=> nil

正規表現のキャプチャ

正規表現では()を扱うことで、マッチした文字列をキャプチャする事ができる。
Rubyの場合では、この機能を扱う際にmatchメソッドを用いて、マッチした結果を配列のように扱う事ができる。

text = "私の誕生日は1997年5月27日です。"
m=/(\d+)年(\d+)月(\d+)日/.match(text)
m #=> <MatchData "1997年5月27日" 1:"1997" 2:"5" 3:"27">
m[0] #=> "1997年5月27日"
m[1] #=> "1977"
m[2] #=> "7"
m[3] #=> "17"
m[1..3] #=> ["1997", "5", "27"]

キャプチャ結果に名前をつける

キャプチャには(?)というメタ文字を使って名前を付けることができます。

(?<year>\d+)(?<month>\d+)(?<day>\d+)
text = "私の誕生日は1997年5月27日です。"
m=/(?<year>\d+)年(?<month>\d+)月(?<day>\d+)日/.match(text)
#=> #<MatchData "1997年5月27日" year:"1997" month:"5" day:"27">
m[:year] #=> "1997"
m["year"] #=> "1997"
m[1] #=> "1977"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?