Linux

正規表現を極める

正規表現とは

正規表現とは、条件に一致する文字列集合を表現するための記法。

テクニック

メタ文字

文字にマッチするメタ文字

  • .  (ドット) 任意の1文字にマッチ
  • [ ] 特定の文字にマッチさせる時 [ef] [a-z] ハイフンオプションで文字の範囲
  • \  メタ文字のい打ち消し  .から始まるファイルを探したい時など
  • \d   1つの半角数字

 

位置や繰り返しにマッチするメタ文字

  • ^  行頭を示す
  • \A  文字列の先頭 railsではこれを使う(複数行を防ぐため)
  • $  行末にマッチ
  • \z   文字列の末尾 railsで使用
  • *  直前の文字の繰り替えし(0回を含む) man*    ⇨ ○ mannnnnn   ○ magoku(0回を含むため)
  • +  直前文字が最低1つの繰り返し  man+ ⇨ ○ mannn  X makoku(nが繰り返されていないのでマッチしない)
  • ?  直前文字が0回か1回繰り返す
  • { }  繰り返し回数指定  {m,n}m回以上、n回以下  {m}ちょうどm回 {m,} m回以上

頻出正規表現(rails)

電話番号

validates :phone_num, format: { with: /\A\d+-\d+-\d+\z/ }

railsで正規表現を使用する場合,format: {with: ~~~~~} を使用する。

 

\A\d+-  文字列の先頭が数字から始まり、2つ以上の半角数字を指定。そしてハイフンを含ませる。

メタ文字のAとzを使うことで、複数行の入力を制御可能。
ちなみに^と$は複数行を許容してしまうため、railsでは使えない。

市外局番に対応させる

\A\d{2,5}-\d{1,4}-\d{4}\z

まず上記と同様に \Aと\zで1行に制限。
2行あるとブロック!!

前回同様\dで半角数字を制限するが、それに加えて、文字数にも{}にも制限で。

{2,5} {1,4}{4}

2文字以上、5字未満、  最後は4文字で限定。

わかっちゃうとへっちゃら。