0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【PHP】preg_matchのpregって何?

0
Last updated at Posted at 2026-05-14

はじめに

ねるねるねるね うちゅうのフルーツ味が美味しい季節になってきました。

ところで、preg_match関数のpregってなんですかね。
気になったので調べてみました。

結論

PerlのpとRegexのregを組み合わせた造語だそうです。

ちなみにPerlはテキスト処理に特化したスクリプト言語で、Regexは正規表現です。

以下、詳細

1. PHPにおける命名の規則性

PHPの正規表現関数は、その関数が「どのエンジン(規格)を使用して処理を行うか」を一目で判別できるよう、次の法則に基づいて命名されています。

[エンジン識別子(接頭辞)]+[reg(正規表現の略称)]_[具体的な動作]

いくつか例を挙げるとこんな感じです。

  • ereg_ (E + reg)
    • エンジン: Extended POSIX
    • かつての標準。処理速度や機能面でPCREに劣り、現在は廃止されている1
  • mb_ereg_ (mb_ + E + reg)
    • エンジン: Multi-byte POSIX
    • 日本語などのマルチバイト文字を扱うためのエンジン(主に鬼車)を使用する。2

pregも「P + reg」という「接頭辞 + 機能略称」の組み合わせで命名されています。

2. pが指すもの

改めて、接頭辞のpはプログラミング言語Perlの頭文字です。

なぜPerlのpを取ったかと言えば、preg_matchが内部で、PCRE (Perl Compatible Regular Expressions) という文法がPerlと完全に互換している外部ライブラリ Perlをベースに発展したPCREという外部ライブラリを使用しているためです。3

デリミタは一部Perlと互換性がある証
preg_match('/abc/', ...) のように、パターンを /(スラッシュ)で囲むデリミタが必要なのは、Perlの文法をそのまま踏襲しているからです。
PHP3〜4の頃に使われていたeregにはこのルールはありませんでした。

参考:https://so-zou.jp/web-app/tech/programming/php/grammar/data-type/string/regular-expression.htm

ちなみに、PCRE自体はC言語で実装されています。

※追記(2026/05/21)
PCREの構文や機能はPerlと完全に互換している訳ではないため、preg_* 関数は「Perlの機能をそのまま使える関数」というより、「Perlをベースに発展した、PCREという独立した正規表現ライブラリの固有名詞」と捉える方が適切でした。

最後に

preg_matchという関数名は、「Perl譲りの正規表現のルールを使って、一致するパターンがあるか探す」という意味でした。

ちなみに、PHP7.3以降は内部エンジンがPCREからPCRE2に入れ替わってますが、関数名はそのままpregです。4

今日はこの辺で。

【2026/05/21 追記】コメント欄にて@tadsanさんに、より正確で幅広い知見を補足していただきました🙌

  1. https://phpspot.net/php/man/php/function.ereg.html

  2. https://www.php.net/manual/ja/function.mb-ereg.php

  3. https://www.weblio.jp/content/pcre

  4. https://tech-lab.sios.jp/archives/39221

0
0
2

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?