この記事では主にチュートリアルの前後で正規表現lookaroundを紹介し、特定の問題に基づいて前方参照関数と後方参照関数の実装テクニックと注意点を分析します。ルックアラウンド前後の正規表現チュートリアルについて説明します。参考として、次のようにみんなと共有してください。
注: すべての例では、正規表現の一致結果はソース テキストの[] の間に含まれています。一部の例は、Java を使用して実装されます。 Java 自体での正規表現の使用法については、対応する場所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。 1. 問題の概要
HTML ページで、ページのタグ、つまり、
正規表現: <[Tt][Ii][Tt][Ll] [ええ] >.*? [Tt][いい][Tt][Ll][ええ]>
結果:
【分析: <[Tt][Ii][Tt][Ll][Ee]> このパターンは、タイトル タグとテキストが一致することを意味します。ただし、タグ自体ではなくタイトルタグ間のテキストのみが必要なので、完璧ではありません。この問題を解決するには、ルックアラウンドを使用する必要があります。
2. 前方検索
前方検索では、一致する必要があるが結果として返されないパターンを指定します。前方検索は、実際には ?= で始まり、= の後に照合対象のテキストが続く部分式です。
URL アドレスのプロトコル部分を照合する例を見てみましょう: テキスト:http://blog.csdn.net/mhmyqn
正規表現: .+(?=:)
結果:【http】
://blog.csdn.net/mhmyqn 分析: URL アドレスのプロトコル部分は: より前の部分で、パターン .+ は任意のテキストと一致し、部分表現 (?=: ) は : と一致しますが、一致した : は結果に表示されません。 ?= を使用して、正規表現エンジンに、: が見つかる限り問題はありませんが、最終的な戻り結果には含まれないことを示します。ここで前方一致 (?=:) を使用せず、(:) を直接使用すると、一致結果は http: になり、これには: が含まれますが、これは私たちが望むものではありません。
注: 前後検索における前後とは、検索するパターンとテキストの相対的な位置を指します。左が前、右が後ろです。つまり、前方検索は xxx(?=xxx)、後方検索は (?
3. 逆方向検索
逆方向検索 演算子
は ?<= です。ただし、すべての正規表現実装が後方検索をサポートしているわけではありません。JavaScript は後方検索をサポートしていません。 たとえば、テキスト ($ で始まり、その後に数字が続く) で価格を検索する場合、結果には通貨記号は含まれません:
Text:category1:$136.25,category2:$28,category3: $88.60
正規表現: ( ?<=$)d+(.d+)?
結果: category1:$
【136.25】,category2:$【28】,category3:$ 【88.60】分析: ( ?
注: 前方検索パターンの長さは可変で、.、*、+; などのメタ文字を含めることができますが、後方検索パターンは固定長のみであり、.、*、+ などを含めることはできません。メタキャラクター。
4. 前方検索と後方検索を組み合わせる
前方検索と後方検索を組み合わせて、前の HTML タグ間のテキストの問題を解決します
:正規表現: (?).*?(?= [Tt][Ii][Tt][ Ll ][ええ]>)
結果:
分析:結果、問題は完全に解決されました。 (?<=<[Tt][Ii][Tt][Ll][Ee]>) は、
5. 前方検索と後方検索を無効にする
前述した前方検索と後方検索は、通常、返される一致結果のテキストの位置を決定するために使用されます。一致結果の前後にどのようなテキストがなければならないか)。この使い方を前方検索、前方検索と呼びます。指定されたパターンに一致しないテキストを検索する、負の前方検索と負の後方検索もあります。
前方および後方検索の演算子:
(?=) | 正前方検索 |
(?!) | 負の前方検索 |
(?& lt;= ) | 正の後方検索 |
(? | 負の後方検索 |
たとえば、テキスト内に価格 ($ で始まり、その後に数字が続きます) と数量があります。価格と数量を確認するには、まず価格を見てみましょう:
テキスト: この注文で 5 ドル節約できました。 (?<=$ )d+
結果: この注文でリンゴ 10 個、オレンジ 15 個、梨 10 個に対して
【$30】を支払いました【$5】 を節約しました。
数量:テキスト: リンゴ 10 個、オレンジ 15 個、梨 10 個に 30 ドル支払いました。
【10】のリンゴ、【15】 の梨、そして
【10】の梨を購入しました。 order.
分析: (? 6. まとめ前方検索と後方検索を使用すると、最終的な一致結果にどのコンテンツが含まれるかを正確に制御できます。前後の検索操作では、部分式を使用してテキストの一致操作が発生する場所を指定し、一致のみで消費はしないという効果を実現できます。
追記: 参考までに、さらに便利な正規表現ツールを 2 つ紹介します:
JavaScript 正規表現オンライン テスト ツール:
http://tools.jb51.net/regex/javascript 正規表現オンライン生成ツール:
http://tools.jb51.net/regex/create_reg
以上が正規表現前後のルックアラウンドの詳細説明tutorial_正規表現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。