正規表現の0幅幅判定例詳細解【PHPベース】


本稿の実例は、正則表現の零幅の断言を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
前言
前に正則表現に関する文章を書きましたが(https://www.jb51.net/article/111359.htm)、この文章では正則を詳しく紹介していますが、ゼロ幅については説明はあまり言及されていません。この内容を追加します。本稿では主に以下の問題を解決する。
①ゼロ幅とは何かを言い切って、なぜゼロ幅を使っているのか?
②ゼロ幅の使い方はどうやって言いますか?
概念
ゼロ幅は、特定のコンテンツ(これらを含むものではないが)の前または後のものを検索するために使用されるアンカー作用の多くを、\b^$\\\\\">のように位置を指定するために使用され、この位置は一定の条件を満たすべきであると断言しています。したがって、それらはゼロ幅とも言われています。特定の位置の文字列の前または後にマッチして検索することが理解されます。したがって、ゼロ幅は、実行過程が2つの場合に分けられており、正の結論であれば、このようにすべきであると断言し、第1のステップは、真(すなわち、一定の条件を満たすかどうか)第2のステップと判定し、条件を満たせば、次のステップにおいてマッチングを検索する。逆判定であれば、第一歩は正規表現の順にマッチします。第二のステップは、逆の代弁に会って、逆の代弁が満たされているかどうかを判断する。
先に断言します
何が先に断言されていますか?文字列の位置に合わせて検索します。使用します。exp)expの前の位置にマッチします。
実例

$str="abcgwcab";
$parent='/bc(?=gw)/';
$str=preg_match($parent,$str,$match);
var_dump($match);
/**
    :
int 1
array (size=1) 
  0 => string 'bc' (length=2)
  */

解析:まず文字列「abcgwcab」のgw位置を検索し、本物と断言してbcにマッチングする。正規表現を$parent='/bcと書くと(?=gw)ca/';マッチが成功しません。
前言をひるがえす
何が逆先行判定で、使うのですか?exp)後とマッチするのはexpではありません。
例:

$str="abcgwcab";
$parent='/bc(?!ww)gw/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
  :
int 1
array (size=1)
 0 => string 'bcgw' (length=4)
*/

解析:まず文字列がbcを含むかどうかを判断し、その後はwwではないと判断し、最後にgwに一致する。逆断言の前後に、他の整合条件を加えることができます。
正後が断言する
正後は何を言いますか?文字列の位置に合わせて検索します。exp)expの後ろの位置に合わせる
例:

$str="abcgwcab";
$parent='/(?<=gw)ca/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
    :
int 1
array (size=1)
 0 => string 'ca' (length=2)
*/

解析:第1ステップは、文字検索「abcgwcab」にgwが含まれているかどうか、結果はtrueとなり、第2ステップは、gwの後ろにcaがあるかどうか調べます。
後ろ髪を切って断言する
何が逆毛だと言い切って使っていますか?

$str="abcgwcab";
$parent='/(?<!bc)gw/';
$str=preg_match($parent,$str,$match);
var_dump($str);
var_dump($match);
/**
int 0
array (size=0)
 empty
*/

解析:まず文字列の中でgwにマッチし、その前がbcかどうかを判断し、その前がbcであることを発見し、falseに戻ります。
練習問題
例1:\d+(?=abc)文字列に'abc'が含まれているかどうかを判断し、その前に1つ以上の数字が含まれていますか?
例2:(?<=\d\d)\w文字列に連続して2つの数字があるかどうかを判断し、その後ろに文字が含まれています。
例3:\d{3} (?!55)文字列に連続して3つの数字が含まれているかどうかを判断し、3つの数字の後に55が含まれていません。
例4:(?<!ac)\w\d文字列に文字と数字の組み合わせが含まれているかどうかを判断します。前はacではありません。
締め括りをつける
先に断言して後発と断言して区別しますか?
先に断言するのは、断言する前の正規表現であり、他の正規表現の後であると断言します。後発は断言する前の正規表現であり、他の正規表現の前には断言する。ここでの先と後は、他の整合に対応して正規表現での順序を言い切るべきです。
PS:ここでもう2つの非常に便利な正規表現ツールを提供します。
JavaScript正規表現はオンラインテストツールです。
http://tools.jb51.net/regex/javascript
正規表現のオンライン作成ツール:
http://tools.jb51.net/regex/create_reg
PHPについてもっと興味がある読者は、本駅のテーマを見てもいいです。「php正則表現の使い方のまとめ」、「PHP配列(Aray)操作テクニック大全」、「PHP基本文法入門教程」、「PHP演算と演算子の使い方のまとめ」、「php対象プログラム設計入門教程」、「PHPネットワークプログラミング技術のまとめ」、「php文字列(string)使い方のまとめ」、「php+mysqlデータベース操作入門教程」および「phpよくあるデータベースの操作技巧のまとめ
本論文で述べたように、皆さんのPHPプログラムの設計に役に立ちますように。