文書更新:2020年04月18日(土) 午前10時01分36秒

Home > 備忘録 > 言語関連 > php に関すること > 正規表現( 23 )

メタ文字

正規表現説明
\直後の文字をエスケープする
. (ドット)改行文字を除く任意の1文字に一致
^文字列の先頭と一致 文字クラスの先頭にある場合は、後に続く文字クラスの否定を意味する。例:[^0-9]
$文字列の末尾と一致
\d10進数の数字1文字に一致する。[0-9]と同じ。
\D10進数以外の任意の1文字と一致する。[^0-9]と同じ。
\s空白文字に一致する。[\t\r\n]と同じ。
\S空白文字以外に一致する。[^\t\r\n]と同じ。
\wアルファベットまたは数字(単語)の1文字に一致する。[0-9A-Za-z_]と同じ。
\Wアルファベットと数字以外(単語以外))の1文字に一致する。[^0-9A-Za-z_]と同じ。
\uアルファベットの大文字に一致する。[A-Z]と同じ。
\Uアルファベットの大文字以外に一致する。[^A-Z]と同じ。
\lアルファベットの小文字に一致する。[a-z]と同じ。
\Lアルファベットの小文字以外に一致する。[^a-z]と同じ。
\aアルファベットの文字数字に一致する。[a-zA-Z0-9]と同じ。
\cアルファベットの文字に一致する。[a-zA-Z]と同じ。
\eエスケープ文字と一致します。\x1bと同じ意味。
\fフォームフィード(改ページ)文字と一致します。\x0cと同じ意味。
\n改行文字と一致します。\x0aと同じ意味。
\rキャリッジ リターン文字と一致します。\x0dと同じ意味。
\tタブ文字と一致する。\x09と同じ意味。
\v垂直タブ文字と一致する。\x0bと同じ意味。

繰り返し

正規表現説明
?直前の文字が0回または1回の繰り返しに一致
*直前の文字が0回以上の繰り返しに一致
+直前の文字の1回以上の繰り返しに一致
{m}直前の文字のm回に一致
{m,}直前の文字のm回以上に一致
{m,n}直前の文字のm回以上n回以下に一致

文字クラス・グループ・選択

正規表現説明
[]角括弧内のいずれかの文字に一致する
例:[hz]otは"hot"や"zot"に一致する
()グループ化する
|いづれかの1つに一致する
例:a|b|c

修飾子

修飾子説明
g一致するものを全て探す
i英字の大文字、小文字を区別しない
mマルチラインモードとみなす
sシングルラインモードとみなす
e文字列を式とみなす
uマルチバイト(UTF-8)対応

正規表現の使用例

  1. 日付のテキストデータを読み取る
  2. 日付のテキストデータ「2019-6-2-3:30:25」を「2019-6-2 3:30:25」に変換するとphpでデータとして扱うことができるので、正規表現で変換することを考えてみた。
    3番目の「-」を空白に変換するだけです。
    echo preg_replace("#^(\d+)-(\d+)-(\d+)-(.*?)$#","${1}-${2}-${3} ${4}", "2019-6-2-3:30:25");
    
    または
    
    echo preg_replace("/^(\d+)\-(\d+)\-(\d+)\-(.*?)$/","${1}-${2}-${3} ${4}", "2019-6-2-3:30:25");
    
    ※実行結果
    2019-6-2 3:30:25