通常の遅延マッチングパターン(?)の使い方の詳細説明

php中世界最好的语言
リリース: 2018-03-30 11:34:39
オリジナル
1823 人が閲覧しました

今回は、通常の遅延マッチングモード(?)の使用方法について詳しく説明します。通常の遅延マッチングモード(?)を使用する際の注意事項について、実際のケースを見てみましょう。

正規表現怠惰なマッチングモード:
貪欲なマッチングモードの章では、人間の本性は貪欲で、より多くのお金、地位、さらには美しい女性さえも手に入れたいと願っていると言われてきましたが、ストイックな人もたくさんいます。 、基本的な要件を満たしている限り、日常のニーズを満たすだけです。正規表現にもそのような一致原則があります。以下にそれらを紹介しましょう。

1. 遅延モードの概念:

このモードは、正規表現を満たすために可能な限り少ない文字に一致します:

var str="axxyyzbdkb"; 
console.log(str.match(/a.*b/));
ログイン後にコピー

上記のコードは貪欲モードです。 string 全体が遅延マッチング モードに変更されます:

var str="axxyyzbdkb"; 
console.log(str.match(/a.*?b/));
ログイン後にコピー

上記のコードは、繰り返される量指定子の後に疑問符 (?) を追加する方法です。
遅延マッチング モードは、できるだけ少ない文字と一致しますが、正規表現の一致ルールを満たす必要があります。たとえば、上記のコードでは、* は 0 個以上の前の文字または部分表現と繰り返し一致しますが、正規表現はend は b である必要があるため、正規表現は上記の文字列の axxyyzb と一致します。

概要は次のとおりです:

1. 反復数量詞の後に疑問符 (?) を追加して、遅延一致を形成します。
2. 遅延マッチングでは、可能な限り少数の文字が一致しますが、一致パターン全体が満たされる必要があります。

2. 怠惰な修飾子リスト:

文法構造 意味説明
*? は何度でも繰り返すことができますが、できるだけ少ない回数にしてください。
+? 1回または何度でも繰り返すことができますが、できるだけ少ない回数繰り返しますが、最小数は1です。
?? 0回または1回繰り返すことができますが、できるだけ少なく繰り返してください。
{n,m}? これを n から m まで繰り返すことができますが、一致する最小数は n です。
{n,}? はn回以上繰り返すことができますが、できるだけ繰り返し少なく、少なくともn回一致する必要があります。

首先引入一个介绍比较详细的网站

http://www.jb51.net/article/31491.htm

接下来是本人的简介

其实贪婪和惰性很容易理解,从字面意思我们就可以知道,所谓的"贪婪"的意思就是,如果符合要求就一直往后匹配,一直到无法匹配为止,这就是贪婪模式。所谓的惰性模式就是一旦匹配到合适的就结束,不在继续匹配下去了,下面我介绍几个例子来主要讲述一下。

首先讲述一下贪婪模式的标示符:+,?,*,{n},{n,},{n,m}.惰性模式:+?,??,*??,{n}?,{n,}?,{n,m}?;

例子一

var pattern=/8[a-zA-Z0-9]*7/;贪婪模式
var string="abc8defghij7klngon8qrstwxy7";
ログイン後にコピー

这时使用了贪婪模式*,表示8与8之间可有有任意多个字母,那这个正则先匹配第一个8,如果匹配到了后,就无限制的匹配后面的内容,只要后面的内容都满足[a-zA-Z0-9]就可以。一直匹配,匹配到不能再匹配为止,看紧接着后面的一个是不是7,如果不是那他就往前进一个(吐出一个看是不是7),如果不是再继续吐直到吐出7为止,然后匹配到的就是这之间的内容。所以结果匹配到的内容就是整条字符串。

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).贪婪和惰性模式还可以用另一种方式来表达。

例子二

var test="<img src="aaa/111.jpg"/><img src="aaa/112.jpg"/><img src="aaa/113.jpg"/>";
var pattern=/<img [^>]*\/>/ig;
ログイン後にコピー

这样也可以实现惰性模式,[^>]这个表示的就是在之间不能出现>,所以结果可以找寻每个标签。

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

js里的正则实现数字每隔四位用空格分隔效果

在PHP里使用正则的效率 贪婪、非贪婪与回溯详解(附代码)

以上が通常の遅延マッチングパターン(?)の使い方の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート