正規表現の怠惰なマッチング モード:
貪欲なマッチング モードの章では、人間の本性は貪欲であり、より多くのお金、地位、さらには美しい女性さえも手に入れることを望んでいると言われてきましたが、一方で、禁欲的な人もたくさんいます。これらは生活の基本的なニーズを満たしています。正規表現にもそのような一致原則があります。以下にそれらを紹介しましょう。
1. 遅延モードの概念:
このモードは、正規表現を満たすために可能な限り少ない文字に一致します。たとえば:
var str="axxyyzbdkb"; console.log(str.match(/a.*b/));
上記のコードは貪欲です。
var str="axxyyzbdkb"; console.log(str.match(/a.*?b/));上記のコードは、繰り返される量指定子の後に疑問符 (?) を追加する方法です。
遅延マッチング モードは、できるだけ少ない文字と一致しますが、正規表現の一致ルールを満たす必要があります。たとえば、上記のコードでは、* は 0 個以上の前の文字または部分表現と繰り返し一致しますが、正規表現はend は b である必要があるため、正規表現は上記の文字列の axxyyzb と一致します。
2. 遅延マッチングでは、可能な限り少数の文字が一致しますが、一致パターン全体が満たされる必要があります。
var pattern=/8[a-zA-Z0-9]*7/;贪婪模式 var string="abc8defghij7klngon8qrstwxy7";この時点では貪欲モード* が使用されており、8 から 8 までの任意の数値が存在できることを示しています。 8 文字の場合、この通常のルールは最初に最初の 8 文字と一致します。一致する場合、次のコンテンツが [a-zA-Z0-9] を満たす限り、制限なく次のコンテンツと一致します。一致できなくなるまで一致し続け、次が 7 かどうかを確認し、そうでない場合は 1 つ進みます (7 であるかどうかを確認するために 1 つ吐き出します)。そうでない場合は 7 が吐き出されるまで吐き続けます。 then match 間のコンテンツです。したがって、一致するコンテンツは文字列全体です。
var pattern=/8[a-zA-Z0-9]*?7/ig;惰性模式 var string="abc8defghij7klngon8qrstwxy7";上記の正規表現は遅延モード *? を使用しています。このとき、マッチング方法は次のようになります。最初に 8 をマッチングし、その後、文字をマッチングして [a-zA-] と一致するかどうかを確認します。 Z0-9] に一致する場合は、次の文字が 7 であるかどうかを確認します。7 である場合は、次の文字を一致させて [a-zA-Z0-9] に一致するかどうかを確認します。一致する場合は、次の文字が 7 であるかどうかを確認します。7 である場合は、終了します。ガイダンスが一致するまで、上記の方法に従ってサイクルを続けます。 (2). 貪欲で怠惰なパターンは別の方法でも表現できます。 例 2 これは遅延モードを実装することもできます。これは、 の間に結果を見つけることができないことを意味します。 。 正規表現の遅延マッチング パターン (?) に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。