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

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

WBOY
WBOYオリジナル
2016-06-13 12:18:03964ブラウズ

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

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

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

1. 文字グループ

これらのセットに対応するメタ文字がすでに存在するため、これらの文字セットを見つけるのは非常に簡単です。ただし、事前定義されたメタ文字のない文字セットと一致する場合は、方法は非常に簡単です。角括弧内にそれらを列挙するだけです。

例: [aeiou] は の任意の 英語母音に一致し、[.*?] は句読点の 1 つに一致します。この時点では、角括弧内のメタ文字は特別な意味を失うことに注意してください。たとえば、[0-9] は d と同じ意味を持ち、[a-zA-Z0-9] は

文字グループは非常に単純ですが、文字グループ内でエスケープが必要な場合を理解する必要があります。

2. エスケープ

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

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

d +Q.$.E$

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

3. 反意語

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

一般的に使用される対義語:

tr> table>

反意語には、いくつかの既知のメタキャラクターの反対であり、大文字形式であるという明らかな特徴があります。たとえば、「D」は数字ではないことを意味します。

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

S+

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

< ;a[^>] +>

ヒント:

ここでの「^」は先頭ではなく、非を意味します。違いをどうやって見分けるのでしょうか?

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

注:

反意語は考慮せずに目に見えない範囲を拡大するため、反意語を自由に使用しないでください。

4. 分岐

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

(c|h|f|to|)cat

分岐条件は、どのルールが満たされていても、全体としてみなされます。一致する場合の具体的な方法は、「|」メソッドを使用して異なるルールを区切ることです。

5. グループ化

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

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

一般的に使用される対義語 意味

説明

常用反义

描述

W

匹配任意不是字母、数字、下划线、汉字的字符

S

匹配任意不是空白符的字符

D

匹配任意非数字的字符

B

匹配不是单词开头或结束的位置

[^x]

匹配除了x以外的任意字符

W 文字、数字、アンダースコア、または漢字以外の任意の文字と一致します
S 空白以外の文字と一致します
D 数字以外の文字と一致します
B 単語の先頭または末尾ではない位置と一致します
[^x] x を除く任意の文字と一致します
ゼロ幅アサーションexp の前の位置と一致しますコメント

类别

语法

描述

捕获

(exp)

匹配exp,并捕获文本到自动命名的组里

(?exp)

匹配exp,并捕获文本到name的组里

(?:exp)

匹配exp,不捕获匹配的文本

零宽断言

(?=exp)

匹配exp前面的位置

(?<=exp)

匹配exp后面的位置

(?!exp)

匹配后面不是exp的位置

(?

匹配前面不是exp的位置

注释

(?#comment)

注释,不对正则有任何影响

カテゴリ

構文
説明
キャプチャ (exp) exp を照合し、テキストを自動的に名前が付けられたグループにキャプチャします
(? exp を照合し、名前のグループにテキストをキャプチャします
(?:exp) 一致するテキストはキャプチャしません
(?=exp)
(?<=exp) exp の後の位置に一致します
(?! exp) exp が後に続かない位置と一致します
(? exp ではない前の位置と一致します
(?#comment) コメント、規則性には影響しません
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。