正規表現の怠惰なマッチング モード:
貪欲なマッチング モードの章では、人間の本性は貪欲であり、より多くのお金、地位、さらには美しい女性さえも手に入れることを望んでいると言われてきましたが、一方で、禁欲的な人もたくさんいます。これらは生活の基本的なニーズを満たしています。正規表現にもそのような一致原則があります。以下にそれらを紹介しましょう。
1. 遅延モードの概念:
このモードは、正規表現を満たすために可能な限り少ない文字に一致します。たとえば:
var str="axxyyzbdkb";
console.log(str.match(/a.*b/));
ログイン後にコピー
上記のコードは貪欲です。
var str="axxyyzbdkb";
console.log(str.match(/a.*?b/));
ログイン後にコピー
上記のコードは、繰り返される量指定子の後に疑問符 (?) を追加する方法です。
遅延マッチング モードは、できるだけ少ない文字と一致しますが、正規表現の一致ルールを満たす必要があります。たとえば、上記のコードでは、* は 0 個以上の前の文字または部分表現と繰り返し一致しますが、正規表現はend は b である必要があるため、正規表現は上記の文字列の axxyyzb と一致します。
概要は次のとおりです:
1. 反復数量詞の後に疑問符 (?) を追加して、遅延一致を形成します。
2. 遅延マッチングでは、可能な限り少数の文字が一致しますが、一致パターン全体が満たされる必要があります。
2. 怠惰な修飾語のリスト:
以下は私の紹介です
実際、貪欲と怠惰は、文字通りの意味から、いわゆる「貪欲」を意味することがわかります。要件が満たされている場合は、マッチングが不可能になるまでマッチングを続けます。これは貪欲モードです。いわゆる遅延モードとは、適切な一致が見つかると終了し、一致が続行されなくなることを意味します。これに焦点を当てるために、いくつかの例を紹介します。
まず、貪欲モードの識別子について話しましょう: +、? ,*,{n},{n,},{n,m}。レイジー モード: +? 、? ? 、*? ? ,{n}?,{n,}?,{n,m}?;
例 1
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 サイトに注目してください。