ホームページ  >  記事  >  ウェブフロントエンド  >  PHP の通常のゼロ幅アサーションの使用方法の詳細な説明

PHP の通常のゼロ幅アサーションの使用方法の詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-03-29 15:58:591566ブラウズ

今回は、PHP の通常のゼロ幅アサーションの使用について詳しく説明します。PHP の通常のゼロ幅アサーションを使用する際の 注意事項 は何ですか?実際のケースを見てみましょう。

この記事の例では、

正規表現のゼロ幅アサーションについて説明します。参考のために皆さんと共有してください。詳細は次のとおりです:

はじめに

① ゼロ幅アサーションとは何ですか、なぜゼロ幅アサーションを使用する必要があるのですか

② ゼロ幅アサーションの使用方法アサーション

コンセプト

ほとんどの場所で定義されているゼロ幅アサーションは、特定のコンテンツ(ただし、これらのコンテンツは含まない)の前後のものを検索するために使用されます。つまり、b のようなアンカー機能があります。 ^ $ < > は、特定の条件を満たす必要がある場所 (つまりアサーション) を指定するために使用されるため、ゼロ幅アサーションとも呼ばれます。私の理解では、限られた位置で

string の前後で一致検索を実行するということです。したがって、ゼロ幅アサーションの実行プロセスは 2 つの状況に分かれます。順方向アサーションの場合、最初のステップはアサーションが真であるかどうか (つまり、特定の条件を満たすかどうか) を判断することです。 2 番目のステップでは、条件が 1 つのステップで一致する場合に次のステップに進みます。逆アサーションの場合、最初のステップは正規表現の順序で照合することです。 2 番目のステップは、逆承認に遭遇したときに逆承認が満たされるかどうかを判断することです。

肯定先読みアサーション

肯定先読みアサーションとは、文字列内の対応する位置の前を検索して一致させ、exp の前の位置を一致させるには (?=exp) を使用します。

$str="abcgwcab";
$parent='/bc(?=gw)/';
$str=preg_match($parent,$str,$match);
var_dump($match);
/**
输出结果:
int 1
array (size=1) 
  0 => string 'bc' (length=2)
  */
分析: まず、文字列「abcgwcab」内の gw 位置を見つけ、それが true であるとアサートし、次に bc と一致します。正規表現が $parent='/bc(?=gw)ca/' のように記述されている場合、一致は失敗します。

反先読みアサーション

反先読みアサーションとは何ですか? exp が続かないものと一致させるには (?!exp) を使用します。

例:

$str="abcgwcab";
$parent='/bc(?!ww)gw/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
输出:
int 1
array (size=1)
 0 => string 'bcgw' (length=4)
*/
分析: まず文字列に bc が含まれているかどうかを判断し、次に ww が続くかどうかを判断し、最後に gw と一致します。逆アサーションの前後に他の一致条件を追加できることがわかります。

フロントアサーションとポストアサーション

ポストアサーションとは? 文字列内の対応する位置(?<=exp)がexp

の後の位置と一致した後で検索して照合することです。

$str="abcgwcab";
$parent='/(?<=gw)ca/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
输出结果:
int 1
array (size=1)
 0 => string 'ca' (length=2)
*/分析: 最初のステップでは、文字「abcgwcab」に gw が含まれているかどうかを確認します。返された結果は true であり、次に 2 番目のステップに進み、gw の後に ca があるかどうかを確認します。 

反事後アサーション

反事後アサーションとは? 1 つは bc なので false を返します

練習問題

例 1: d+(?=abc) 文字列に 'abc' が含まれるかどうか、および文字列に 1 つ以上の数字が含まれるかどうかを判断します。前に

例 2: (?<=dd)w d+(?=abc)
判断一个字符串中是否包含'abc',且其前面是否包含一个或多个数字

例2:(?<=dd)w
判断字符串中是否存在连续两个数字,且其后面包含一个字母

例3:d{3} (?!55)
判断字符串中是否包含连续三个数字,且三个数字后面不是55

例4:(?<!ac)wd文字列内に 2 つの連続する数字とその後に文字があるかどうかを判断します

例 3: d{3 } ( ?!55)

文字列に 3 つの連続する数字が含まれており、その 3 つの数字の後に 55 が続いていないかどうかを判断します例 4: (?<!ac)wd どちらかを決定してください 文字列に文字と数字の組み合わせが含まれており、その前に ac が付いていませんか

要約

述語と事後アサーションの違いは何ですか? プリエンプティブ アサーションは、アサーションは他の正規表現の後にあり、アサーションはアサーションの前の正規表現であり、アサーションは他の正規表現の前にあります。正規表現

PS: ここでは、参考のために 2 つの非常に便利な正規表現ツールを提供します:

🎜🎜🎜🎜🎜

この記事の事例を読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

正規表現のあいまい一致機能を実装する方法

正規表現検証を使用してパスワードの強度を判断し、プロンプトを表示します

以上がPHP の通常のゼロ幅アサーションの使用方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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