ホームページ  >  記事  >  バックエンド開発  >  PHP の通常の先読みおよび遡及分析アプリケーション

PHP の通常の先読みおよび遡及分析アプリケーション

WBOY
WBOYオリジナル
2016-06-13 13:04:33897ブラウズ

PHP の通常の先読みおよび遡及分析アプリケーション

ログ分析を行う人は、膨大な量のデータの中から特定のデータ パターンを見つけるために、多くの場合、何千ものログ エントリを処理する必要があり、多くの複雑な正規表現を記述する必要があります。たとえば、ログ ファイル内の特定の文字列を含まないエントリを列挙したり、特定の文字列で始まらないエントリを検索したりできます。

?

正規表現には先読みと後読みという概念があり、これら 2 つの用語は正規表現エンジンのマッチング動作を非常に明確に表しています。注意すべき点の 1 つは、通常のテーブルです。 表現における「前」と「後」は、私たちが一般に理解している前後とは少し異なります。私たちは通常、テキストの先頭の方向を「前」、テキストの終わりの方向を「後」と呼ぶことに慣れています。ただし、正規表現エンジンの場合は です。これは、テキストの先頭から末尾まで解析を開始するため (解析方向は通常のオプションで制御できます)、テキストの末尾の方向については、次のようになります。この時点では通常のエンジンがまだその領域に到達していないため、テキストヘッドの方向を「前」と呼びます。通常のエンジンがすでにその領域を通過しているため、テキストヘッドの方向を「後」と呼びます。

?

いわゆる先読みとは、正規表現が特定の文字に一致するときに、事前に「解析されていないテキスト」を調べて、一致するパターンに一致するかどうかを確認することです。先読みとは、正規表現がすでに一致しています。テキストをチェックして、一致パターンと一致するかどうかを確認します。特定のマッチング パターンの一致または不一致は、ポジティブ マッチングおよびネガティブ マッチングとも呼ばれます。

最新の高度な正規表現エンジンは一般に先読みをサポートしていますが、先読みのサポートはそれほど広範囲ではないため、ここではニーズを達成するために否定的な先読みを使用します。

?

最初のグループは何も一致しませんでしたが、2 番目のグループは文字列全体と一致しました。先ほどの正規表現に戻って分析してみましょう。実際、通常のエンジンが領域 A を解析するとき、すでに Bエリアの前進作業を開始します。このとき、A 領域が Null - .* は元々空文字との一致が許可されており、A 領域が先読み条件を満たしている場合に一致が成功したことがわかりました。 ロボットではなく「2009」の文字列。したがって、照合プロセス全体ですべてのエントリが正常に照合されます。

?

.* を先読み式に移動します

?

?

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