検索
ホームページバックエンド開発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 までご連絡ください。
Python解析XML中的特殊字符和转义序列Python解析XML中的特殊字符和转义序列Aug 08, 2023 pm 12:46 PM

Python解析XML中的特殊字符和转义序列XML(eXtensibleMarkupLanguage)是一种常用的数据交换格式,用于在不同系统之间传输和存储数据。在处理XML文件时,经常会遇到包含特殊字符和转义序列的情况,这可能会导致解析错误或者误解数据。因此,在使用Python解析XML文件时,我们需要了解如何处理这些特殊字符和转义序列。一、特殊字符和

Python编程解析百度地图API文档中的坐标转换功能Python编程解析百度地图API文档中的坐标转换功能Aug 01, 2023 am 08:57 AM

Python编程解析百度地图API文档中的坐标转换功能导读:随着互联网的快速发展,地图定位功能已经成为现代人生活中不可或缺的一部分。而百度地图作为国内最受欢迎的地图服务之一,提供了一系列的API供开发者使用。本文将通过Python编程,解析百度地图API文档中的坐标转换功能,并给出相应的代码示例。一、引言在开发中,我们有时会涉及到坐标的转换问题。百度地图AP

使用Python解析SOAP消息使用Python解析SOAP消息Aug 08, 2023 am 09:27 AM

使用Python解析SOAP消息SOAP(SimpleObjectAccessProtocol)是一种基于XML的远程过程调用(RPC)协议,用于在网络上不同的应用程序之间进行通信。Python提供了许多库和工具来处理SOAP消息,其中最常用的是suds库。suds是Python的一个SOAP客户端库,可以用于解析和生成SOAP消息。它提供了一种简单而

PHP8.0中的XML解析库PHP8.0中的XML解析库May 14, 2023 am 08:19 AM

随着PHP8.0的发布,许多新特性都被引入和更新了,其中包括XML解析库。PHP8.0中的XML解析库提供了更快的解析速度和更好的可读性,这对于PHP开发者来说是一个重要的提升。在本文中,我们将探讨PHP8.0中的XML解析库的新特性以及如何使用它。什么是XML解析库?XML解析库是一种软件库,用于解析和处理XML文档。XML是一种用于将数据存储为结构化文档

使用Python解析带有命名空间的XML文档使用Python解析带有命名空间的XML文档Aug 09, 2023 pm 04:25 PM

使用Python解析带有命名空间的XML文档XML是一种常用的数据交换格式,能够适应各种应用场景。在处理XML文档时,有时会遇到带有命名空间(namespace)的情况。命名空间可以防止不同XML文档中元素名的冲突,提高了XML的灵活性和可扩展性。本文将介绍如何使用Python解析带有命名空间的XML文档,并给出相应的代码示例。首先,我们需要导入xml.et

PHP中的HTTP Basic鉴权方法解析及应用PHP中的HTTP Basic鉴权方法解析及应用Aug 06, 2023 am 08:16 AM

PHP中的HTTPBasic鉴权方法解析及应用HTTPBasic鉴权是一种简单但常用的身份验证方法,它通过在HTTP请求头中添加用户名和密码的Base64编码字符串进行身份验证。本文将介绍HTTPBasic鉴权的原理和使用方法,并提供PHP代码示例供读者参考。一、HTTPBasic鉴权原理HTTPBasic鉴权的原理非常简单,当客户端发送一个请求时

Python如何解析XML文件Python如何解析XML文件Aug 09, 2023 am 11:48 AM

Python如何解析XML文件XML(eXtensibleMarkupLanguage)是一种用于表示结构化数据的标记语言。在处理XML数据时,我们经常需要解析XML文件以提取所需的信息。Python提供了很多库和模块来解析XML文件,例如ElementTree、lxml等。本文将介绍如何使用Python解析XML文件,并附带代码示例。在Python中,

PHP 爬虫实战之获取网页源码和内容解析PHP 爬虫实战之获取网页源码和内容解析Jun 13, 2023 am 10:46 AM

PHP爬虫是一种自动化获取网页信息的程序,它可以获取网页代码、抓取数据并存储到本地或数据库中。使用爬虫可以快速获取大量的数据,为后续的数据分析和处理提供巨大的帮助。本文将介绍如何使用PHP实现一个简单的爬虫,以获取网页源码和内容解析。一、获取网页源码在开始之前,我们应该先了解一下HTTP协议和HTML的基本结构。HTTP是HyperText

See all articles

ホット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ヘンタイを無料で生成します。

ホットツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。