正規表現を使用して回避策を見つける方法

php中世界最好的语言
リリース: 2018-03-30 09:21:15
オリジナル
1168 人が閲覧しました

今回は、正規表現を使用して回避策を見つける方法と、正規表現を使用して回避策を見つけるときの注意事項について説明します。実際のケースを見てみましょう。

この記事の例では、

正規表現チュートリアルの前後のルックアラウンドについて説明します。参考として、次のようにみんなと共有してください。

注: すべての例では、正規表現の一致結果はソース テキストの [] の間に含まれています。一部の例は、Java を使用して実装されます。 Java 自体での正規表現の使用法については、対応する場所で説明します。すべての Java サンプルは JDK1.6.0_13 でテストされています。

1. 問題の概要

HTML ページで、ページのタグ、つまり と </ の間のテキストを一致させるなど、タグのペアの間のテキストを一致させます。 title>: </p> <p style="text-align: left;">Text: </p><head><TITLE>私のページへようこそ

正規表現:

<[Tt][Ii][Tt][Ll] [ええ] >.*?

結果:

私のページへようこそ</ title>] <span style="color: #3366ff"></head><span style="color: #ff6600"></span></span>分析: <[Tt][Ii][Tt][Ll][Ee]> このパターンは、タイトル タグとテキストが一致することを意味します。ただし、タグ自体ではなくタイトルタグ間のテキストのみが必要なので、完璧ではありません。この問題を解決するには、ルックアラウンドを使用する必要があります。 </p> <p style="text-align: left;"></p>2. 前方検索 <p style="text-align: left;"><strong></strong>前方検索では、一致する必要があるが結果として返されないパターンを指定します。前方検索は実際には、?= で始まり、一致するテキストが = の後に続く部分式です。 </p> <p style="text-align: left;">URL アドレスのプロトコル部分を照合する例を見てみましょう: </p> <p style="text-align: left;">テキスト: </p>http://blog.csdn.net/mhmyqn<p style="text-align: left;"><span style="color: #3366ff"></span>正規表現: .</p>+(?=:)<p style="text-align: left;"><span style="color: #3366ff"></span>結果:</p>【http】<p style="text-align: left;"><span style="color: #ff6600">://blog.csdn.net/mhmyqn</span><span style="color: #3366ff"></span> 分析: URL アドレスのプロトコル部分は: より前の部分で、パターン .+ は任意のテキストと一致し、部分表現 (?=: ) は : と一致しますが、一致した : は結果に表示されません。 ?= を使用して、正規表現エンジンに、: が見つかる限り問題はありませんが、最終的な戻り結果には含まれないことを示します。ここで前方一致 (?=:) を使用せず、(:) を直接使用すると、一致結果は http: になり、これには: が含まれますが、これは私たちが望むものではありません。 </p> <p style="text-align: left;"></p>注: 前後検索における前後とは、パターンと検索対象のテキストの間の相対的な位置を指します。左が前、右が後ろです。つまり、前方検索は xxx(?=xxx)、後方検索は (?<span style="color: #ff0000"></span>3. 後方検索<p style="text-align: left;"><strong></strong>後方検索演算子は ?<= です。ただし、すべての正規表現実装が後方検索をサポートしているわけではありません。</p>JavaScript<p style="text-align: left;"> は後方検索をサポートしていません。 <a href="http://www.php.cn/wiki/48.html" target="_blank"></a>たとえば、テキスト ($ で始まり、その後に数字が続く) で価格を検索する場合、結果には通貨記号は含まれません: </p> <p style="text-align: left;">Text: </p>category1:$136.25,category2:$28,category3: $88.60<p style="text-align: left;"><span style="color: #3366ff"></span>正規表現: </p>( ?<=$)d+(.d+)?<p style="text-align: left;"><span style="color: #3366ff"></span>結果: </p>category1:$<p style="text-align: left;">【136.25】<span style="color: #3366ff">,category2:$<span style="color: #ff6600">【28】</span>,category3:$<span style="color: #ff6600"></span> 【88.60】</span><span style="color: #ff6600"></span>分析: ( ?</p> <p style="text-align: left;"><span style="color: #ff0000">注: 前方検索パターンの長さは可変で、.、*、+ <a href="http://www.php.cn/code/10419.html" target="_blank"> などの </a> メタ文字を含めることができますが、後方検索パターンは固定長のみで、.、*、+ などを含めることはできません。クラスのメタキャラクターなど。 </span></p> <p style="text-align: left;"><strong>4. 前方検索と後方検索を組み合わせる</strong></p> <p style="text-align: left;"> 前方検索と後方検索を組み合わせて、前の <a href="http://www.php.cn/code/427.html" target="_blank">HTML タグ間のテキストの問題を解決します</a>: </p> <p style="text-align: left;">Text: <span style="color: #3366ff"><head><TITLE>私のページへようこそ

正規表現: (?<=<[Tt][Ii][Tt][Ll][Ee]>).*?(? =)

結果:<span style="color: #ff6600">【私のページへようこそ】</span>< ;/head>

分析: 結果から、問題が完全に解決されたことがわかります。 (?<=<[Tt][Ii][Tt][Ll][Ee]>) は、 と一致しますが、それを消費しません。(?=</[Tt]) ][Ii][Tt][Ll][Ee]>) は、 と一致しますが、それを消費しません。最終的に返される一致結果には、タグ間のテキストのみが含まれます。

5. 前方検索と後方検索を無効にする

前述した前方検索と後方検索は、通常、返される一致結果のテキストの位置を決定するために使用されます。一致結果の前後にどのようなテキストがなければならないか)。この使い方を前方検索、前方検索と呼びます。指定されたパターンに一致しないテキストを検索する、負の前方検索と負の後方検索もあります。

前方および後方検索の演算子:

(?=) 正前方検索
(?!) 負の前方検索
(?& lt;= ) 正の後方検索
(? 負の後方検索

たとえば、テキスト内に価格 ($ で始まり、その後に数字が続きます) と数量があります。価格と数量を確認するには、まず価格を見てみましょう:

テキスト: この注文で 5 ドル節約できました。 (?<=$ )d+

結果: この注文でリンゴ 10 個、オレンジ 15 個、梨 10 個に対して

【$30】

を支払いました【$5】 を節約しました。

数量:

テキスト: リンゴ 10 個、オレンジ 15 個、梨 10 個に 30 ドル支払いました。

【10】

のリンゴ、【15】 の梨、そして

【10】

の梨を購入しました。 order.

この記事の事例を読んだ後、あなたはその方法をマスターしたと思います、よりエキサイティングです php中国語ウェブサイトの他の関連記事にご注意ください! 推奨読書: 正規表現チュートリアルの位置一致チュートリアル(コード付き)

phpとjsを使用して、数字と文字を組み合わせたパスワードの正規一致を実装します

以上が正規表現を使用して回避策を見つける方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!