この記事の例では、JS 正規表現の遅延マッチングと貪欲マッチングの使用法について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:
貪欲モードと遅延モードについて話す前に、JS の規則性の基本を確認しましょう:
基本的な書き方:
① 二重引用符は必要ありません。/ を使用するだけです。 / を含める => / wehfwue123123/.test();
②バックスラッシュはエスケープを意味します=>/.jpg$/
③基本的な使い方: .test(str);
構文:
①アンカークラス
/^ a/=>「a」で始まる
/.jpg$/=>「.jpg」で終わる
②文字クラス
[abc]: a or b or c
[0-9]: A数字
[a-z]: 文字
: 任意の文字
③ メタキャラクター
^: 非を示すために [] の内側で使用され、始まりを示すために [] の外側で使用されます
d: [0-9]
s: 空白文字
w: [A-Za-z0-9_]
D: [^d] - 非数値
S: 非空白文字
④ 数量子
{m,n}: m
メタキャラクター表現:
*: {0,}
?: {0,1}
+: {1,}
難易度: 貪欲モード/怠惰モード
貪欲モード - マッチングオン成功の前提で、可能な限り一致します
遅延モード - 成功の前提で、可能な限り一致しません
説明 1: コードとテキストの両方
正規表現で貪欲パターンと遅延パターンを使用します定量子は式を制御できます照合プロセスを知っていますか? , *, + つまり、関連するパターンの出現数を指定できます。デフォルトでは、その一致プロセスでは文字列全体の検索が開始され、一致しない場合は最後の文字列が削除されます。次に、Match かどうかを確認し、一致するか文字列が空になるまで次のようにループします。
vars ="abbbaabbbaaabbb1234"; varre1=/.*bbb/g;//*是贪婪量词 re1.test(s);
この一致プロセスは文字列全体から始まります:
re1.test("abbbaabbbaaabbb1234");//false ,则去掉最后一个字符4再继续 re1.test("abbbaabbbaaabbb123");//false ,则去掉最后一个字符3再继续 re1.test("abbbaabbbaaabbb12");//false ,则去掉最后一个字符2再继续 re1.test("abbbaabbbaaabbb1");//false ,则去掉最后一个字符1再继续 re1.test("abbbaabbbaaabbb");//true ,结束
貪欲な量指定子は、遅延量指定子になります。一致しない場合は、一致しない場合は 1 つ追加します。上記の例を見てください。例として。
vars ="abbbaabbbaaabbb1234"; varre1=/.*?bbb/g;//*?是惰性量词 re1.test(s);
マッチングプロセスは次のとおりです:
re1.test("a");//false, 再加一个 re1.test("ab");//false, 再加一个 re1.test("abb");//false, 再加一个 re1.test("abbb");//true, 匹配了,保存这个结果,再从下一个开始 re1.test("a");//false, 再加一个 re1.test("aa");//false, 再加一个 re1.test("aab");//false, 再加一个 re1.test("aabb");//false, 再加一个 re1.test("aabbb");//true, 匹配了,保存这个结果,再从下一个开始
概要:
デフォルトの貪欲マッチングは後ろから前へのマッチングで、最大長のマッチング、遅延マッチングは量指定子の後に を追加します。 ?文字列の先頭からマッチングを開始し、最小の長さでマッチングします
この記事が JavaScript プログラミングの皆様のお役に立てれば幸いです。
その他の js 正規表現の遅延マッチングと貪欲マッチングの使用分析関連記事については、PHP 中国語 Web サイトに注目してください。