wie funktioniert die Regex wie ". *" in Perl

8

Ich bin verwirrt von regulären Ausdruck wie .*

%Vor%

Ausgabe: //

Also, ich weiß nicht, warum das Ergebnis // und nicht / ist.

    
yQuery 25.10.2013, 07:05
quelle

2 Antworten

4

Beim ersten Mal entspricht .* 5 Zeichen ab Position null ( scott ). Dies wird durch / ersetzt.

/g bedeutet so oft wie möglich Übereinstimmung, so dass es erneut versucht, dieses Mal an Position fünf zu beginnen.

Beim zweiten Mal entspricht .* 0 Zeichen ab Position 5 (leere Zeichenfolge). Dies wird durch / ersetzt.

Beim dritten Mal geht .* zu 0 Zeichen, die an Position fünf beginnen (""), aber es gibt eine Prüfung, die sicherstellt, dass sie nicht zweimal hintereinander mit der gleichen Startposition und Länge übereinstimmt. Also rückt es die Position vor und versucht, auf Position sechs zu passen. Da dies außerhalb der Zeichenfolge ist, schlägt es fehl.

    
ikegami 25.10.2013, 11:33
quelle
10

.* stimmt zwei Mal überein. Erstens entspricht es "scott". Dann stimmt es mit der leeren Zeichenfolge nach "scott" überein.

    
ysth 25.10.2013 07:11
quelle

Tags und Links