ホームページ バックエンド開発 PHPチュートリアル 正規表現の解析の仕組み_PHP チュートリアル

正規表現の解析の仕組み_PHP チュートリアル

Jul 20, 2016 am 10:57 AM
マッチ 原理 仕事 通常 表現 ルール 解析する

正規表現 は、特定の構文ルールに準拠する一連の文字列を説明または一致させるために使用される単一の文字列を指します。多くのテキスト エディターやその他のツールでは、特定のパターンに一致するテキスト コンテンツを取得したり置換したりするために正規表現がよく使用されます。

正規表現の雑な記述がパフォーマンスのボトルネックの主な原因ですが、正規表現の効率を改善できる箇所はまだたくさんあります。 2 つの正規表現が同じテキストに一致するからといって、それらが同等に高速であるとは限りません。

正規表現の効率には多くの要因が影響します。まず、正規表現によって適用されるテキストは多岐にわたり、部分一致は完全一致よりも時間がかかります。各ブラウザの正規表現エンジンには、さまざまな内部最適化機能もあります。

正規表現を効果的に使用するには、その仕組みを理解することが重要です。正規表現処理の基本的な手順は次のとおりです。

ステップ 1: コンパイル

正規表現オブジェクトを (正規表現リテラルまたは RegExp コンストラクターを使用して) 作成した後、ブラウザはテンプレートにエラーがないことを確認し、次に、それを、マッチング作業を実行するネイティブ コード ルーチンに変換します。正規表現を変数に割り当てると、この手順を繰り返す必要がなくなります。

ステップ 2: 開始位置を設定する

正規表現を使用する場合は、まずターゲット文字列内の検索を開始する位置を決定する必要があります。これは文字列の開始位置、または正規表現の lastIndex 属性によって指定されますが、ステップ 4 からここに戻るとき (一致の試行が失敗したため)、この位置は最後に試行された開始位置より後になります。キャラクターの位置。

ブラウザが正規表現エンジンを最適化する方法は、この段階での早期予測を通じて不必要な作業をスキップすることです。たとえば、正規表現が ^ で始まる場合、IE と Chrome は通常、文字列の先頭に一致があるかどうかを判断し、その後の位置の愚かな検索を回避します。別の例は、3 番目の文字が x である文字列を照合することです。賢い方法は、最初に x を見つけてから、開始位置を 2 文字分遡ることです。

ステップ 3: 正規表現の各文字を照合します

正規表現が開始位置を見つけると、ターゲット テキストと正規表現テンプレートを 1 つずつスキャンします。特定の文字が一致しない場合、正規表現はスキャンの前の位置に戻り、正規表現の他の可能なパスを入力しようとします。

ステップ 4: 一致の成功または失敗

文字列の現在位置で完全一致が見つかった場合、正規表現は成功したと宣言されます。正規表現内のすべての可能なパスが試行されても一致が成功しなかった場合、正規表現エンジンはステップ 2 に戻り、文字列内の次の文字から再試行します。文字列内の各文字 (および最後の文字の後の位置) がこのようなプロセスを経て、正常に一致しなかった場合にのみ、正規表現は完全な失敗を宣言します。
このプロセスを念頭に置くと、正規表現のパフォーマンスに影響を与える問題の種類を賢明に特定するのに役立ちます。

元のアドレス: http://www.yiiyaa.net/1231


www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/445787.html技術記事正規表現は、特定の構文規則に準拠する一連の文字列を説明または一致させるために使用される単一の文字列を指します。多くのテキスト エディターやその他のツールでは、正規表現...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Oracle エラー 3114 の詳細な説明: 迅速に解決する方法 Oracle エラー 3114 の詳細な説明: 迅速に解決する方法 Mar 08, 2024 pm 02:42 PM

Oracle エラー 3114 の詳細な説明: 迅速に解決する方法、具体的なコード例が必要です Oracle データベースの開発および管理中に、さまざまなエラーが頻繁に発生しますが、その中でもエラー 3114 は比較的一般的な問題です。エラー 3114 は通常、データベース接続に問題があることを示します。これは、ネットワーク障害、データベース サービスの停止、または不適切な接続文字列設定が原因である可能性があります。この記事では、エラー 3114 の原因とこの問題を迅速に解決する方法を詳しく説明し、特定のコードを添付します

nohupの機能と原理の解析 nohupの機能と原理の解析 Mar 25, 2024 pm 03:24 PM

nohup の役割と原理の分析 Unix および Unix 系オペレーティング システムでは、nohup はバックグラウンドでコマンドを実行するためによく使用されるコマンドです。ユーザーが現在のセッションを終了したり、ターミナル ウィンドウを閉じたりしても、コマンドはまだ実行され続けています。この記事では、nohup コマンドの機能と原理を詳しく分析します。 1. nohup の役割: バックグラウンドでのコマンドの実行: nohup コマンドを使用すると、ターミナル セッションを終了するユーザーの影響を受けることなく、長時間実行されるコマンドをバックグラウンドで実行し続けることができます。これは実行する必要があります

Win11の新機能分析:Microsoftアカウントへのログインをスキップする方法 Win11の新機能分析:Microsoftアカウントへのログインをスキップする方法 Mar 27, 2024 pm 05:24 PM

Win11 の新機能の分析: Microsoft アカウントへのログインをスキップする方法 Windows 11 のリリースにより、多くのユーザーは、Windows 11 がより便利で新しい機能をもたらしたことに気づきました。ただし、ユーザーによっては、自分のシステムが Microsoft アカウントに関連付けられることを好まず、この手順をスキップしたい場合があります。この記事では、ユーザーが Windows 11 で Microsoft アカウントへのログインをスキップし、よりプライベートで自律的なエクスペリエンスを実現するのに役立ついくつかの方法を紹介します。まず、一部のユーザーが Microsoft アカウントにログインすることに抵抗がある理由を理解しましょう。一方で、一部のユーザーは次のことを心配しています。

PHP 正規表現: 厳密な一致とあいまいな包含の除外 PHP 正規表現: 厳密な一致とあいまいな包含の除外 Feb 28, 2024 pm 01:03 PM

PHP 正規表現: 完全一致と除外 ファジー包含正規表現は、プログラマがテキストを処理する際に効率的な検索、置換、フィルタリングを実行できる強力なテキスト マッチング ツールです。 PHP では、正規表現は文字列処理やデータ マッチングにも広く使用されています。この記事では、PHP で完全一致を実行し、あいまい包含操作を除外する方法に焦点を当て、具体的なコード例を使用して説明します。完全一致 完全一致とは、バリエーションや余分な単語ではなく、正確な条件を満たす文字列のみと一致することを意味します。

Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? May 31, 2024 am 10:32 AM

Golang の正規表現では、パイプ文字 | を使用して複数の単語または文字列を一致させ、各オプションを論理 OR 式として区切ります。例: 「fox」または「dog」に一致します: fox|dog は「quick」、「brown」または「lazy」に一致します: (quick|brown|lazy) 「Go」、「Python」または「Java」に一致します: Go| Python |Java は単語または 4 桁の郵便番号と一致します: ([a-zA

PHPにおけるmidpointの意味と使い方の分析 PHPにおけるmidpointの意味と使い方の分析 Mar 27, 2024 pm 08:57 PM

【PHPにおけるミッドポイントの意味と使い方の分析】 PHPでは、ミッドポイント(.)は2つの文字列やオブジェクトのプロパティやメソッドを接続するためによく使われる演算子です。この記事では、PHP における中間点の意味と使用法を詳しく掘り下げ、具体的なコード例を示して説明します。 1. 文字列中間点演算子の接続 PHP での最も一般的な使用法は、2 つの文字列を接続することです。 2 つの文字列の間に . を置くと、それらをつなぎ合わせて新しい文字列を形成できます。 $string1=&qu

PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける Feb 29, 2024 am 08:06 AM

PHP 文字列マッチングのヒント: あいまいな組み込み式を避ける PHP 開発では、文字列マッチングは一般的なタスクであり、通常は特定のテキスト コンテンツを検索したり、入力形式を検証したりするために使用されます。ただし、一致の精度を確保するために、曖昧な包含式の使用を避ける必要がある場合があります。この記事では、PHP で文字列マッチングを行うときにあいまいな包含式を回避するためのテクニックをいくつか紹介し、具体的なコード例を示します。完全一致には preg_match() 関数を使用します。 PHP では、preg_mat を使用できます。

Apache2 は PHP ファイルを正しく解析できません Apache2 は PHP ファイルを正しく解析できません Mar 08, 2024 am 11:09 AM

スペースの制限のため、以下は簡単な記事です。Apache2 は一般的に使用されている Web サーバー ソフトウェアであり、PHP は広く使用されているサーバー側スクリプト言語です。 Web サイトを構築する過程で、Apache2 が PHP ファイルを正しく解析できず、PHP コードの実行が失敗するという問題が発生することがあります。この問題は通常、Apache2 が PHP モジュールを正しく構成していないこと、または PHP モジュールが Apache2 のバージョンと互換性がないことが原因で発生します。この問題を解決するには通常 2 つの方法があります。1 つは次のとおりです。

See all articles