正規表現前後のルックアラウンドの詳細説明チュートリアル
この記事の例では、正規表現チュートリアルの前後の回避策について説明します。参考のために皆さんと共有してください。詳細は次のとおりです。
注: すべての例では、正規表現の一致結果がソース テキストの [and] の間に含まれています。一部の例は Java を使用して実装されます。 Java 自体の正規表現 式の使用法については該当箇所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。
1. 問題の概要
HTML ページで、ページのタグ (
テキスト:
正規表現: 。 *?< ;/ [Tt][Ii][Tt][Ll][Ee]>
結果:
[分析: このパターンは、タイトル タグとその間のテキストを大文字と小文字を区別せずに一致させますが、タイトルのみが必要であるため、完全ではありません。タグ自体ではなく、それらの間のテキストです。この問題を解決するには、ルックアラウンドを使用する必要があります。
2. 前方検索
前方検索では、一致する必要があるが結果として返されないパターンを指定します。前方検索は、実際には ?= で始まり、= の後に照合対象のテキストが続く部分式です。
URL アドレスのプロトコル部分を照合する例を見てください:
テキスト: http://blog.csdn.net/mhmyqn
正規表現: .+(?=:)
結果: [http] ://blog.csdn.net/mhmyqn
分析: URL アドレスのプロトコル部分は: より前の部分で、pattern.+ は任意のテキストに一致し、部分表現 (?=:) は: に一致しますが、次のように一致します。結果には現れない。 ?= を使用して、正規表現エンジンに、: が見つかる限り問題はありませんが、最終的な戻り結果には含まれないことを示します。ここで前方一致 (?=:) を使用せず、(:) を直接使用すると、一致結果は http: になり、これには: が含まれますが、これは私たちが望むものではありません。
注: 前後検索における前後とは、パターンと検索対象のテキストの間の相対的な位置を指します。左が前、右が後ろです。つまり、前方検索は xxx(?=xxx)、後方検索は (?
3. 後方検索
後方検索演算子は ?
たとえば、テキスト ($ で始まり、その後に数字が続く) で価格を検索したい場合、結果には通貨記号は含まれません:
Text: category1:$136.25,category2:$28,category3:$88.60
正規表現: (?
結果: category1:$【136.25】、category2:$【28】、category3:$【88.60】
分析: (?
=$)パターン マッチング$,d+( .d+)? パターンは整数または小数に一致します。結果からわかるように、結果には通貨記号は含まれず、価格のみが含まれます。逆引き検索を使用しないとどうなるでしょうか?パターン $d+(.d+)? を使用すると、結果に $ が含まれます。パターン d+(.d+) を使用すると、category1(23) の数値とも一致しますが、これは望んでいることではありません。
注: 前方検索パターンの長さは可変で、.、*、+ などのメタ文字を含めることができますが、後方検索パターンは固定長のみであり、.、*、+ などを含めることはできません。 。
4. 前方検索と後方検索を組み合わせる
前方検索と後方検索を組み合わせて、前の HTML タグ間のテキストの問題を解決します:
テキスト:
< ;TITLE>私のページへようこそ title>正規表現: (?).*? Ii][Tt][Ll][Ee]>)
結果:
分析: わかります結果から、問題は完全に解決されました。 (?) は、
5. 前方検索と後方検索を無効にする
前述の前方検索と後方検索は通常、テキストの一致に使用されます。その目的は、返される一致結果のテキストの位置を決定することです (一致を指定することによって)。 result 前後にどのようなテキストを含める必要があるか)。この使い方を前方検索、前方検索と呼びます。指定されたパターンに一致しないテキストを検索する、負の前方検索と負の後方検索もあります。
前後を検索するための演算子:
たとえば、テキスト内に価格 ($ で始まり、その後に数字が続きます) と数量があるとします。まず、価格と数量を探します。
テキスト: 私は $30 を支払いました。リンゴ 10 個、オレンジ 15 個、梨 10 個で、$5 節約できました。
正規表現: (?
結果: リンゴ 10 個、オレンジ 15 個、梨 10 個に対して [$30] 支払いました。この注文で [$5] 節約できました。
数量の検索:
テキスト: リンゴ 10 個、オレンジ 15 個、梨 10 個で $30 を支払いました。この注文で $5 節約できました。
正規表現: b(?
結果: この注文で、【10】個のリンゴ、【15】個のオレンジ、【10】個の梨に $30 を支払いました。
分析: (?
6. 概要
前方検索と後方検索を使用すると、最終的な一致結果にどのコンテンツが含まれるかを正確に制御できます。前後の検索操作では、部分式を使用してテキストの一致操作が発生する場所を指定し、一致のみで消費はしないという効果を実現できます。
この記事が皆さんの正規表現の学習に役立つことを願っています。
その他の正規表現チュートリアルや詳細なルックアラウンド関連記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

記事では、PHP 5.3で導入されたPHPの後期静的結合(LSB)について説明し、より柔軟な継承を求める静的メソッドコールのランタイム解像度を可能にします。 LSBの実用的なアプリケーションと潜在的なパフォーマ

記事では、入力検証、認証、定期的な更新など、脆弱性から保護するためのフレームワークの重要なセキュリティ機能について説明します。

PHP開発でPHPのCurlライブラリを使用してJSONデータを送信すると、外部APIと対話する必要があることがよくあります。一般的な方法の1つは、Curlライブラリを使用して投稿を送信することです。

PHP開発における固体原理の適用には、次のものが含まれます。1。単一責任原則(SRP):各クラスは1つの機能のみを担当します。 2。オープンおよびクローズ原理(OCP):変更は、変更ではなく拡張によって達成されます。 3。Lischの代替原則(LSP):サブクラスは、プログラムの精度に影響を与えることなく、基本クラスを置き換えることができます。 4。インターフェイス分離原理(ISP):依存関係や未使用の方法を避けるために、細粒インターフェイスを使用します。 5。依存関係の反転原理(DIP):高レベルのモジュールと低レベルのモジュールは抽象化に依存し、依存関係噴射を通じて実装されます。

この記事では、フレームワークにカスタム機能を追加し、アーキテクチャの理解、拡張ポイントの識別、統合とデバッグのベストプラクティスに焦点を当てています。

セッションハイジャックは、次の手順で達成できます。1。セッションIDを取得します。2。セッションIDを使用します。3。セッションをアクティブに保ちます。 PHPでのセッションハイジャックを防ぐための方法には次のものが含まれます。1。セッション_regenerate_id()関数を使用して、セッションIDを再生します。2。データベースを介してストアセッションデータを3。
