Heim > Web-Frontend > js-Tutorial > Hauptteil

Detaillierte Erläuterung der Verwendung des regulären Lazy-Matching-Musters (?)

php中世界最好的语言
Freigeben: 2018-03-30 11:34:39
Original
1794 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Verwendung des regulären Lazy-Matching-Modus (?) ausführlich erläutern Praktischer Fall, werfen wir einen Blick darauf.

Regulärer Ausdruck

Lazy-Matching-Modus:Im Kapitel über den Gier-Matching-Modus wurde gesagt, dass die menschliche Natur gierig ist und auf mehr Geld, Status und sogar schöne Frauen hofft Aber es gibt auch viele stoische Menschen, die nur ihre Grundbedürfnisse im Leben befriedigen müssen. Es gibt auch ein solches Matching-Prinzip in regulären Ausdrücken.

1. Das Konzept des Lazy-Modus:

Dieser Modus ist genau das Gegenteil des Greedy-Modus. Er entspricht so wenig Zeichen wie möglich, um den regulären Ausdruck zu erfüllen Beispiel:

Der obige Code befindet sich im Greedy-Modus, sodass er mit der gesamten
var str="axxyyzbdkb"; 
console.log(str.match(/a.*b/));
Nach dem Login kopieren
Zeichenfolge

übereinstimmen kann. Ändern wir ihn in den Lazy-Matching-Modus:

Der obige Code ist ein Lazy-Match. Die Methode besteht darin, nach dem wiederholten Quantifizierer ein Fragezeichen (?) hinzuzufügen.
var str="axxyyzbdkb"; 
console.log(str.match(/a.*?b/));
Nach dem Login kopieren
Lazy Matching-Modus soll so wenig Zeichen wie möglich abgleichen, muss jedoch die Abgleichsregeln regulärer Ausdrücke erfüllen. Im obigen Code kann * beispielsweise wiederholt mit 0 oder mehr vorherigen Zeichen oder Unterausdrücken übereinstimmen, aber reguläre Ausdrücke Das Ende der Formel muss b sein, damit der reguläre Ausdruck mit axxyyzb in der obigen Zeichenfolge übereinstimmen kann.


Die Zusammenfassung lautet wie folgt:

1. Fügen Sie nach dem wiederholten Quantifizierer ein Fragezeichen (?) hinzu, um einen Lazy Match zu bilden.

2. Beim Lazy Matching werden so wenige Zeichen wie möglich gefunden, aber das gesamte Matching-Muster muss erfüllt sein.


2. Lazy

Qualifier Liste:

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

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";
Nach dem Login kopieren

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

var pattern=/8[a-zA-Z0-9]*?7/ig;惰性模式
var string="abc8defghij7klngon8qrstwxy7";
Nach dem Login kopieren

上面正则使用了惰性模式*?,此时匹配方式是这样的,先匹配一个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;
Nach dem Login kopieren

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

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

推荐阅读:

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

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

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Verwendung des regulären Lazy-Matching-Musters (?). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!