note.nkmk.me

正規表現の基礎

Date: 2017-02-12 / tags: 正規表現
スポンサーリンク

メタキャラクタとリテラル

[, ], -など、正規表現の中で特別な意味を持つ文字をメタキャラクタと呼び、そのほかの通常の文字をリテラルと呼ぶ。

メタキャラクタの前に\をつけることをエスケープと呼び、メタキャラクタをリテラルとして扱うことができる。

文字クラス

メタキャラクタ[]で囲んだものを文字クラスと呼ぶ。

[]で囲まれた文字のいずれか1文字にマッチする。

  • [12]: 1か2にマッチ

範囲

文字クラスの中の-は、範囲を表す。

  • [1-6]: 1...6のいずれか1文字にマッチ
  • [a-z]: abc...xyzのいずれか1文字にマッチ
  • [A-Z]: ABC...XYZのいずれか1文字にマッチ
  • [a-zA-Z0-9]: abc...xyz, ABC...XYZ, 01...9のいずれか1文字にマッチ
  • [6-1]: エラー
  • [-6]: 範囲ではなく、-か6にマッチ

否定

文字クラスの先頭の^は、否定を表す。

  • [^0-9]: 数字以外の1文字にマッチ

文字クラスの略記

  • \d: [0-9]
  • \D: [0-9]以外
  • \s: 空白・タブ・改行・復帰・改ページ
  • \S: \s以外
  • \w: [a-zA-Z0-9_](英数字とアンダースコア)
  • \W: \w以外

任意の1文字

メタキャラクタ.は任意の1文字にマッチする。

選択

メタキャラクタ|は複数の選択肢のいずれかにマッチする。

例えば、Red|Green|Blueは、RedGreenBlueのいずれかにマッチする。

量指定子

直前にある正規表現で指定された要素が繰り返し表されることを意味する。

  • ?: 0または1個
  • *: 0以上の任意の個数
  • +: 1以上の任意の個数
  • {n}: n個
  • {n,}: n個以上の任意の個数
  • {m,n}: m個以上、n個以下の任意の個数

https?は、

  • http
  • https

にマッチする。

go*dは、

  • gd
  • god
  • good
  • goooooood

にマッチする。

位置に対するマッチ

  • ^: 文字列の先頭にマッチ
  • $: 文字列の末尾にマッチ
  • \b: 単語の境界(空白文字やタブなど)にマッチ
  • \B: \b以外にマッチ
  • \<: 単語の先頭にマッチ
  • \>: 単語の末尾にマッチ

後方参照

()で囲まれた正規表現にマッチする文字列を保存し、それ以降の正規表現で\1として使用できる。()が複数ある場合は、\1, \2のように番号を増やしていく。

スポンサーリンク
シェア
このエントリーをはてなブックマークに追加

関連カテゴリー

関連記事