Q. 正規表現
正規表現はアトム、メタキャラクター、パターン修飾で構成されます。アトムは単なる普通の文字です。
メタキャラクター:
d: 任意の 10 進数 [0-9] と一致します
s: 任意の空白文字と一致します
w: 任意の数字、文字、アンダースコア [0-9a-zA-Z_] と一致します
.: 一致します改行文字以外の任意の文字
?: 0 回または 1 回一致
+: 前のアトムと 1 回以上一致
*: 任意の回数一致
|: 2 つまたは複数の分岐選択肢と一致、複数を区切るために使用-選択パターン
b: 単語境界の一致
B: 非単語境界
^: 入力文字列の先頭と一致
$: 入力文字列の末尾と一致 位置
(): パターン単位、複数原子は大きな原子が一つの単位として構成されています。これにより、関連する一致がキャッシュに保存され、後で使用するために取得できます。部分一致が保存されるバッファには、1 から始まり 99 までの番号が付けられます。各バッファには、n を使用してアクセスできます。正規表現パターンで使用する場合はエスケープに注意してください。例: "/^d{4}(W)d{2}1d{2}$/"。非ストレージ モードは、括弧内の ?:s を使用して設定できます。
正規表現エンジンの内部動作
正規表現エンジンがどのように動作するかを理解すると、特定の正規表現が期待どおりに動作しない理由をすぐに理解するのに役立ちます。
<code> 有两种类型的引擎:文本导向(text-directed)的引擎和正则导向(regex-directed)的引擎。Jeffrey Friedl把他们称作DFA和NFA引擎。本文谈到的是正则导向的引擎。这是因为一些非常有用的特性,如“惰性”量词(lazy quantifiers)和反向引用(backreferences),只能在正则导向的引擎中实现。所以毫不意外这种引擎是目前最流行的引擎。 </code>
使用されているエンジンがテキスト指向か通常指向かを簡単に判断できます。後方参照または「遅延」量指定子が実装されている場合は、使用しているエンジンが正規表現指向であることを確認できます。次のテストを実行できます: 正規表現 <
を変更します。以上、さまざまな側面を含めて php-preg-1 を紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。