はい!
Perl言語の正規表現構文で導入された「look forward」演算子に感謝します。Perl RegEx フレームワークは、PHPやJavascriptを含む多くの言語で使用されています。
Perl には「後読み」演算子も存在しますが、 Javascriptではサポートされていません。
以下に、検索用のJavaScript構文を使用した正規表現を示します。
1- (「Javascript」および「PHP」)の検索
S = "Javascript is a client language and PHP is a server language";
patt = /^(?=.*Javascript).*PHP/;
if ( S.match(patt) )
document.write("Found it!");
else
document.write("Not Found");
「見つかりました」と表示されます。
2-現在検索中(「PHP」ではなく「Javascript」)
S = "Javascript is a client language and PHP is a server language";
patt = patt = /^(?!.*PHP).*Javascript/;
if ( S.match(patt) )
document.write("Found it!");
else
document.write("Not Found");
文字列に PHP が含まれているため、「Not Found」と出力されます。
3- 3 番目の検索は(「Javascript」と「PHP」と「Perl」)
S = "Javascript rules, PHP are in most server, however Perl is inspiring";
patt = /^(?=.*Javascript)^(?=.*PHP).*Perl/;
if ( S.match(patt) )
document.write("Found it!");
else
document.write("Not Found");
「見つかりました!」と表示されます。.
4-最後に、最後のケースは ( "Javascript"および ( "PHP"または"Perl" )) です。違いはありません。従来のグループ化を括弧 (丸括弧) で使用するだけです。
S = "Javascript rules, however Perl is inspiring";
patt = /^(?=.*Javascript)(.*PHP|.*Perl)/;
if ( S.match(patt) )
document.write("Found it!");
else
document.write("Not Found");
「見つかりました!」と表示されます。PHPはありませんが、Perlは文字列になっているためです。
コメントの後に編集:
私はそれを認めました。「Look Forward」の構文はひどいものです。しかし、それは簡単に理解できます。スキャナーは見ますが、歩かないでください!
patt = /Bee (?=Gees)/; // patt = patt1(?=patt2) => patt1 + patt2
S = "Bee Gees";
if (S.match(patt))
document.write('ok'); // print OK and cursor stops at "G"
それがポジティブな楽しみです
patt = /Bee (?!Gees)/; // patt = patt1(?!patt2) => patt1 + Not (patt2)
S = "Bee Gees";
if (S.match(patt))
document.write('ok'); // it does not match
S = "Bee Goes";
if (S.match(patt))
document.write('ok'); // print OK and cursor stops at "G"
それがネガティブな前向きです
すばらしいニュースは、Patt2がグループ化、サブグループ化などの複雑なパターンになる可能性があることです。
最終的な説明:
- .* : 0 文字以上
- ^ : が文字列の先頭である場合に一致します。カーソルは移動しません。
- $ : が文字列の末尾である場合に一致します。カーソルは移動しません。
- (p1|p2|...) : p1またはp2または ... が一致する場合に一致します。
そう
patt = /^(?=.*Javascript).*PHP/;
は正規表現 ( /は文字列への引用符としての RegEx 区切り文字) であり、前方参照(「Javascript」が見つかるまで文字をジャンプする) を意味し、成功した場合は「PHP」が見つかるまで文字をジャンプ
します (前方参照が行われないことを覚えておいてください) 。 't はカーソルを動かしません!)
つまり、スキャナーが「Javascript」を検出した場合にのみ「PHP」が一致します。