ホームページ > 記事 > ウェブフロントエンド > 定期的な怠惰と貪欲の説明
この記事では、日常的な怠惰と貪欲について説明します。皆さんのお役に立てれば幸いです。
exec - > 通常のキャプチャ
キャプチャが実行されるたびに、成功した一致がない場合、キャプチャ結果は null になります。キャプチャされたコンテンツの形式
1. キャプチャされたコンテンツは、現在の正規表現によってキャプチャされたコンテンツです
インデックス: キャプチャされたコンテンツが始まるインデックス位置。 string
入力: キャプチャされた元の文字列
reg = /\d+/ str = 'woshi2016ni2017' res =
var res = reg.exec(str);
console.log(res) // ['2016',index:5,input:'woshi2016ni2017']
1) 遅延 -> exec が実行されるたびに、最初に一致したコンテンツのみが何も処理されずにキャプチャされます。複数のキャプチャが実行された場合でも、最初に一致したコンテンツがキャプチャされます。
LastIndex: 正規表現が各キャプチャの検索を開始する文字列内の位置です。デフォルト値は 0 です
2) 遅延を解決するには、正規表現の最後に修飾子 "g" を追加します。
修飾子: g, i, m
global(g): グローバルマッチング
ignoreCase(i): 大文字小文字のマッチングを無視する
multiline(m): 複数行のマッチング
var reg = /\d/g;
var str = 'woshi2016ni2017';
console.log(reg.lastIndex)
console.log(reg.exec(str))原則: グローバル修飾子 g を追加した後、各キャプチャ後に、lastIndex の値が最新の値になり、次のキャプチャは最新の位置から開始されるため、キャプチャする必要があるものはすべてCaptured すべてのコンテンツが取得されました
3)、正規表現でキャプチャされたすべてのコンテンツを取得する独自のプログラムを作成します(gを追加することを忘れないでください)
var reg = /\d+/g;var str = 'aswofde2015xsewde2016awdefer2017';var ary = [];var res = reg.exec(str);while(res){ ary.push(res[0]) res = reg.exec(str); } console.log(ary)//[2015,2016,2017]4) , 貪欲さ 正規表現のたびに、最長一致の結果に基づいてキャプチャされます。例: 2 は正規パターンに準拠し、2015 も正規パターンに準拠します。デフォルトでは、2015 をキャプチャします
5)。規則的なパターンの貪欲な性質を解決するにはどうすればよいですか -> 量指定子のメタキャラクターの後に 1 を追加します。ただ
var reg = /\d+?/g;var str = 'aswofde2015xsewde2016awdefer2017'; console.log(reg.exec(str));? には正規表現で多くの関数があります:
通常の
メタ文字 の後ろに置いて、/d?/ -> の数値を表します表示されません 量指定子の
メタキャラクタの後に置くとキャプチャキャンセル時に貪欲になります3. 文字列内のmatchメソッド→正規表現に一致する文字を全て入れる Get
var reg = /\d+?/g;var str = 'aswofde2015xsewde2016awdefer2017';var ary = str.match(reg);//[2,0,1,5,2,0,1,6,2,0,1,7]現在の状況では match は exec よりも単純ですが、match には処理できない問題がいくつかあります。グループ キャプチャの場合、match は大きな正規表現で一致したコンテンツのみをキャプチャできます。小さな正規表現でキャプチャされたコンテンツは取得できません
以上が定期的な怠惰と貪欲の説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。