php勉強ブログ

トップ > 基礎文法 > 正規表現の基本

正規表現の基本

更新日:2022-12-26

任意の文字列の中から、特定のパターンを持った文字列を検索したい時や、 与えられた文字列が、特定のパターンに適合するかを判定したい場合などは 正規表現を使います。 正規表現とは、特定の文字列をその文字列を構成する条件で表現したものです。

例えば、ある文章から、世紀を表す「00th Century」という文字列を全て検索したいとします。 「00th Century」という文字列を構成する条件を考えてみます。

  1. 先頭に1桁もしくは2桁の数字が来る
  2. 2文字目もしくは3文字目から「th」もしくは「nd」「rd」が続く(1stや2nd、3rdの場合を考慮する)
  3. 4文字目もしくは5文字目に空白文字が来る
  4. 5文字目もしくは6文字目にCenturyが来る

という感じで表現できそうです。 では、これを正規表現で表すと、

[0-9]?(st|nd|rd|th)\sCentury

となります。

正規表現一覧

おもな正規表現は下記になります。

特殊文字 意味例 マッチするもの
.任意の一文字c.t catやcutなどにマッチ
*直前の文字の0回以上の繰り返しw*wwやwwwなどにマッチ
[][]内の文字のいずれか1文字(文字クラス) -で範囲を指定、^で否定 [abc]aかbかc
^行頭 ^HelloHelloで始まる文字列
$行末 world.$world.で終わる文字列
\直後の文字を普通の文字として処理する\$5$5という文字列として扱う
|選択肢 st|nd|rd|thstまたはndまたはrdまたはth
?0回あるいは1回の繰り返し [0-9]?0から9の一桁の数字または00から99までの2桁の数字
+1回以上の繰り返し1+11や111、1111など
{n}n回の繰り返し 9{3}999
{n,m}最低n回、最高m回の繰り返し 9{3,5}999,9999,99999
{n,}n回以上の繰り返し 9{3,}9999,99999など

正規表現に関するphpの関数

preg_match()関数

preg_match()関数は引数を2つ取り、 第一引数で与えられたパターンが第二引数にマッチすれば1を、しなければ0を返します。 第一引数のパターンは"/ /"で囲みます。

preg_match("/パターン/","文字列");

「00th Century」がある文章の中に含まれるかを判定する場合は、

preg_macth("/[0-9]?(st|nd|rd|th)\sCentury/","20th Century Boy");
//1(マッチした)
preg_replace()関数

preg_replace()関数は、パターンにマッチした文字列をすべて指定の文字列に変換します。

preg_replace("/パターン/","文字列");
preg_replace("/<.*?>/","tag","<h1>Hello, World.</h1>");
//<h1>をtagに置き換える
preg_split()関数

preg_sprit()関数は、パターンにマッチした文字列のみを取り出し、配列として返します。

preg_split("/パターン","文字列");

例えば、文字列「at Spring In 2022.」という文字列から、数字だけを取り出したい場合は、以下のように書きます。

preg_split("/[0-9]*/","at Spring In 2022.");
//array('2','0','2','2')

#基礎文法

コメントはこちらから

※コメント内容は公開されますので、個人情報など公開されてはいけない情報は投稿しないでください。

カテゴリー別

中の人

グラフィックとwebのデザインを請け負う個人事業主デザイナー。2022年4月に独立したばかり。銀河英雄伝説と十二国記が好き。