LoginSignup
3
3

More than 3 years have passed since last update.

PHPの正規表現の書き方の基本。記号や数字などの置換や抽出方法をまとめた

Last updated at Posted at 2019-11-03

近況報告

エンジニア転職成功しました。YouTubeでエンジニア転職したい方向けに情報発信しています。

正規表現とは

  • 曖昧な文字列パターンを表現する記法のこと

//0-9の数値3桁と4桁で、間に-が入る文字列パターンの場合

[0-9]{3}-[0-9]{4}

正規表現でできること

  • 正規表現パターンと文字列を指定することで、両者が合致するかどうかを正規表現エンジンが判定できる
  • 掲示板への投稿記事から有害なHTMLタグだけを取り除く
  • 任意の文章からURL文字列だけを取り出す
  • HTMLからタグの情報だけを取り除く
  • 人間の為のデータと、システムの為のデータをつなぐ橋渡し

正規表現の基本

  • 正規表現によって表された文字列パターン→正規表現パターン と呼ぶ
  • 与えられた正規表現パターンが、ある文字列の中に含まれる→文字列が正規表現パターンにマッチする
  • 一つの正規表現パターンにもマッチする文字列は複数あることが多い
//正規表現の記法

/正規表現/修飾子

正規表現の記法の例

特定の文字列にマッチ

  • デフォルトでは、大文字/小文字を区別する
/XYZ/
パターン 比較する文字列 マッチするか
/poo/ pool
/poo/ post ×
/ame/ My name is Rio.
/Wings/ WINGS Project ×

いずれかの文字にマッチ

  • 特定の文字の1文字にマッチするか
  • 先頭に「^」を指定することで、「いずれの文字にもマッチしない」ことも指定する
/[XYZ]/
パターン 比較する文字列 マッチするか
/[opq]/ panda
/[opq]/ Panda ×
/h[ijk]l/ hil
/h[^ijk]l/ hill ×
/h[^ijk]l/ hello

特定範囲の文字にマッチ

  • 特定の範囲の1文字にマッチするか
  • アルファベットや数値など、同種の文字をパターンとして表したい場合に利用する
/[0-9]/
パターン 比較する文字列 マッチするか
/[o-s]/ one
/[o-s]/ One ×
/[o-s]/ hil
/[o-sO-S]/ one、One
/[1-3]/ No.3、best1
/[1-3]/ 500yen ×

任意の1文字

  • 任意の1文字を.で表現する
/X.Z/
パターン 比較する文字列 マッチするか
/p.n/ pen、panda
/p.n/ plan ×
/p..n/ plan

先頭/末尾を検出

  • 文字列の先頭では^、末尾では$を、特定のパターンがマッチするか確認する際に使用する
/^XYZ/
/XYZ$/
パターン 比較する文字列 マッチするか
/^pla/ plan、place
/^pla/ replay、splash ×
/pla$/ apple、people

文字列の繰り返しパターンを表現

  • 直前の文字の繰り返しを表現するのに使用する
/X*/ //0文字以上のX
パターン マッチする文字列 マッチしない文字列
/po*l/ pl、pol、pool、poool col
/po+1/ pol、pool、poool pl
/po?l/ pl、pol pool、col
/po{2}l/ pool pol、poool
/po{2,}l/ pool、poool pl、pol
/po{2,3}l/ pool、poool pol、pooool

特定の文字セットを表現

  • 「\文字」で、特殊な文字範囲を表現できる
パターン 概要
\t タブ文字
\n 改行
\r 復帰
\d 数値にマッチ([0-9]と同じ)
\D 数値以外にマッチ
\s 空白文字にマッチ([ \t\n\f\r]と同じ)
\S 空白以外の文字にマッチ([^\s]と同じ)
\w 大文字/小文字のアルファベット、数字、アンダースコアにマッチ([a-zA-Z_0-9]と同じ)
\W 文字以外にマッチ([^\w]と同じ)
3
3
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
3
3