文書更新:2020年04月18日(土) 午前10時01分36秒
Home > 備忘録 > 言語関連 > php に関すること > 正規表現( 23 )
メタ文字
| 正規表現 | 説明 |
|---|
| \ | 直後の文字をエスケープする |
| . (ドット) | 改行文字を除く任意の1文字に一致 |
| ^ | 文字列の先頭と一致
文字クラスの先頭にある場合は、後に続く文字クラスの否定を意味する。例:[^0-9] |
| $ | 文字列の末尾と一致 |
| \d | 10進数の数字1文字に一致する。[0-9]と同じ。 |
| \D | 10進数以外の任意の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)対応 |
正規表現の使用例
- 日付のテキストデータを読み取る
日付のテキストデータ「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