10
10

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.

正規表現

Last updated at Posted at 2015-01-26

Rubyの正規表現はRegExpクラス

|

この前後にある正規表現のどちらかと一致

*

直前の正規表現の0回以上の繰り返しに一致

+

直前の正規表現の1回以上の繰り返しに一致

?

直前の正規表現の0回もしくは1回に一致

{m,n}

直前の正規表現のm回以上n回以下の繰り返しに一致

*?

直前の正規表現の0回以上の繰り返しに一致(最短)

+?

直前の正規表現の1回以上の繰り返しに一致(最短)

??

直前の正規表現に0回もしくは1回一致(最短)

{m,n}?

直前の正規表現のm回以上n回以下の繰り返しに一致(最短)

[]

[]内に指定した文字のどれかと一致

[^]

[]内に指定した文字でない場合に一致

.

任意の1文字と一致

^

行頭と一致

$

行末と一致

()

正規表現をグループにまとめる

\

メタ文字を打ち消す

\A

文字列の先頭と一致

\b

単語境界と一致

\B

\B以外と一致

\d

数字と一致

\D

数字以外と一致

\s

空白文字と一致

\S

\s以外と一致

\w

英数字とアンダースコアに一致

\W

\w以外と一致

\z

文字列の末尾と一致

scan()

文字列の中で正規表現と一致した部分文字列をすべて求めたい場合に使うと有効。
重複しない一致部分文字列を配列に格納して返す。

b = "foo 10 bar 20 baz 30"
b.scan(/(\w+)\s+(\d)/)
=>[["foo", "10"],["bar", "20"],["baz", "30"]]

マッチパターン

"文字列" =~ /正規表現リテラル/
"文字列".match(/正規表現リテラル/)

split()

単語区切りを正規表現で指定することができる。
分割する個数を引数limitで指定することができる。

b = "foo bar baz"
b.split(\w+/, 2)
=>["foo", "bar baz"]

emailの正規表現

VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }
10
10
3

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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?