ホームページ >バックエンド開発 >PHPチュートリアル >PHP コア テクノロジーとベスト プラクティスの正規表現一致ルール

PHP コア テクノロジーとベスト プラクティスの正規表現一致ルール

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-23 13:36:421007ブラウズ

PHP コアテクノロジーの正規表現マッチングルールとベストプラクティス

この記事では、一般的に使用されるマッチングルールをいくつか紹介します。

1. 文字グループ

これらのセットに対応するメタキャラクターがすでに存在するため、数字、文字、およびスペースを検索するのは非常に簡単ですが、事前定義されたメタキャラクターのない文字セットを照合する場合、方法は非常に簡単で、それをリストするだけです。そのうち角括弧内は。

例: [aeiou] は任意の英語の母音に一致し、[.*?] は句読点の 1 つに一致します。この時点では、角括弧内のメタ文字は特別な意味を失うことに注意してください。

たとえば、[0-9] の意味は d とまったく同じです。同様に、[a-zA-Z0-9] は w と同等です。

文字グループは非常に単純ですが、文字グループ内でエスケープが必要な場合は確実に把握してください。

2. エスケープ

* の検索など、メタキャラクター自体を検索または一致させたい場合は?次に問題があります。それらは別の意味に解釈されるため、それらを指定する方法がありません。このとき、これらの文字の特別な意味を解除する必要がある。これをエスケープといいます。

PHP ではバックスラッシュ () を使用してエスケープを表し、Q と E はパターン内の正規表現メタ文字を無視することもできます。例:

d +Q.$.E$

上記の式は、最初に 1 つ以上の数値に一致し、次にピリオド、$、ピリオド、最後に文字列の末尾に一致します。つまり、Q と E のメタ文字は通常の文字として照合されます。

3. 反意語

場合によっては、検索対象の文字が特定の文字クラスに属していない場合、または表現が既知の定義に反している場合 (数字以外の他の文字など)、反意語を使用する必要があります。

よく使われる対義語:

S+
よく使われる対義語

説明

W

文字、数字、アンダースコア、漢字以外の文字

の文字
S

空白文字以外の文字と一致します

D

数字以外の文字と一致します

B

単語が始まる位置と一致しない、または

[^x]

を除く任意の文字と一致しますたとえば、「D」は数字ではないことを意味します。

1) 空白文字を含まない文字列

2) a で始まり山括弧で展開される文字列:

] +>

ヒント:

ここでの「^」は、始まりではなく、間違っていることを意味します。どうやって差別化するのか?

始まりを意味する ^ は正規表現の先頭でのみ使用でき、否定を意味する ^ は文字グループ内でのみ使用できます。つまり、角かっこ内でのみ使用できます。

注:

反意語は、考慮していなかった目に見えない範囲を拡大するため、意のままに反意語を使用しないでください。

4. 分岐 分岐とは、複数の一致する状況が考えられることを意味します。

(c|h|f|to|)cat

括弧内の式は、複数のルールに関係なく、特定のメソッドと一致すると見なされます。異なるルールを区切るには「 |」メソッドを使用します。

5. グループ化

単一の文字を繰り返すには、文字の直後に修飾子を追加するだけですが、複数の文字を繰り返したい場合はどうすればよいでしょうか?

一般的に使用されるグループ化構文:

カテゴリ

構文説明(exp)(?:exp)一致するテキストをキャプチャします ゼロ幅アサーション(?=exp)(?<= exp) (?!exp) exp ではない後の位置と一致します (?

前の位置と一致します。 exp Location Comments(?#comment)

キャプチャ

expとキャプチャテキストを自動命名に一致させますグループでは、グループでは、

(?&lt; name&gt; exp; exp)

expをexpにし、テキストを名前のグループにキャプチャしてください

exp

マッチexp 後の位置

コメントは正規表現に影響を与えません

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。