検索
ホームページバックエンド開発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编程解析百度地图API文档中的坐标转换功能Python编程解析百度地图API文档中的坐标转换功能Aug 01, 2023 am 08:57 AM

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

Python解析XML中的特殊字符和转义序列Python解析XML中的特殊字符和转义序列Aug 08, 2023 pm 12:46 PM

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

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解析SOAP消息使用Python解析SOAP消息Aug 08, 2023 am 09:27 AM

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

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

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

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

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

PHP中的单点登录(SSO)鉴权方法解析PHP中的单点登录(SSO)鉴权方法解析Aug 08, 2023 am 09:21 AM

PHP中的单点登录(SSO)鉴权方法解析引言:随着互联网的发展,用户通常要同时访问多个网站进行各种操作。为了提高用户体验,单点登录(SingleSign-On,简称SSO)应运而生。本文将探讨PHP中的SSO鉴权方法,并提供相应的代码示例。一、什么是单点登录(SSO)?单点登录(SSO)是一种集中化认证的方法,在多个应用系统中,用户只需要登录一次,就能访问

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

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

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

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。