2
1

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 5 years have passed since last update.

正規表現(Ruby)

Last updated at Posted at 2020-04-09

\d は「半角数字1文字」を表す

\d は「1個の半角数字(0123456789)」を意味するメタ文字です(文字の集合を表しているので、特に 「文字クラス」 と呼ばれます)。

{n,m} は「直前の文字が n 文字以上、m 文字以下」であることを表す

/\d{1,3}/
=>1桁以上3桁以下
○ 1, 43, 576
✖️ 3451, 05969

{n} は「直前の文字がちょうど n 文字」であることを表す

/\d{4}/  => 4桁
/3{5}/  => 33333

[AB] は「AまたはBが1文字」であることを表す

/[OK]/   => OかK

[a-z] と [-az] ではハイフンの意味が異なる

/[a-c]/   => abc
/[-ac]/   => -かaかc

正規表現の正確さと複雑さはトレードオフになることが多い

メールアドレスの正規表現は下記の通り。
複雑で考えていると莫大な時間を使ってしまうため、ある程度に抑えることもしばしばある。

(?:[a-z0-9!#$%&'+/=?^_{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_{|}~-]+)|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])")@(?:(?:a-z0-9?.)+a-z0-9?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-][a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\[\x01-\x09\x0b\x0c\x0e-\x7f])+)])

区切り文字が1文字、 もしくは区切り無し

「~が1文字、または無し」を表現するためには ? というメタ文字を使います。(文字量を指定するので 量指定子 のひとつです)
/フランシスコ・?ザビエル/  => フランシスコ・ザビエルかフランシスコザビエル

任意の1文字

「任意の1文字」を表す . というメタ文字(文字クラス)があります。
/オリバー.カーン/   => オリバー カーンやオリバー・カーンやオリバー@カーン

対象の言葉を含む1行を抜き出す

オリバーカーン等を含む1行を文章から抜き出す。

ruby
text.split(/\n/).grep(/オリバー.?カーン/)

2
1
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
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?