Es gibt eine kürzeste Übereinstimmung in einem regulären Ausdruck, aber lassen Sie uns überprüfen, wie er verwendet wird, während Sie den Vorgang mit einigen Beispielen beobachten.
str =" Ah ah "Ah" I "Uu" Ja "Oh" Kaka? "
Wenn Sie nur den in Klammern eingeschlossenen Teil aus einer solchen Zeichenfolge extrahieren möchten (dh die drei Teile von "a", "u" und "oh" extrahieren möchten), verwenden Sie die kürzeste Übereinstimmung.
** + ** stimmt in diesem Beispiel nicht überein, da es mit einem oder mehreren Zeichen übereinstimmt.
str = "Ah ah """
puts str.scan(/「.+」/)
=>Stimmt nicht überein
*** stimmt mit 0 oder mehr Zeichen überein, daher stimmt es in diesem Beispiel überein.
str = "Ah ah """
puts str.scan(/「.*」/)
=>「」
Da es ein Zeichen ** a ** gibt, stimmt es überein.
str = "Ah ah "Ah""
puts str.scan(/「.+」/)
=>"Ah"
Dies stimmt auch überein, da 0 Zeichen ** a ** vorhanden sind. Das Ergebnis ist das gleiche.
str = "Ah ah "Ah""
puts str.scan(/「.*」/)
=>"Ah"
In diesem Beispiel stimmt der Teil mit ** "", der zuerst angezeigt wurde, und ** ", der zuletzt angezeigt wurde, überein. Das möchte ich nicht tun.
str = "Ah ah "ah" i "uu" yeah "oh""
puts str.scan(/「.+」/)
=>"Ah" ich "Uu" ja "oh"
**? Wenn Sie ** hinzufügen, wird die kürzeste Übereinstimmung erzielt.
str = "Ah ah "ah" i "uu" yeah "oh""
puts str.scan(/「.+?」/)
=>"A" "Uu" "Oh"
Herzliche Glückwünsche. : Klatsch Klatsch klatsch ::
Wenn Sie *** anstelle von ** + ** verwenden, ist das Ergebnis dasselbe, aber ...
str = "Ah ah "ah" i "uu" yeah "oh""
puts str.scan(/「.*?」/)
=>"A" "Uu" "Oh"
Je nachdem, ob Sie mit ** "" ** übereinstimmen möchten oder nicht, müssen Sie ** + ** und *** ** richtig verwenden.
Wenn Sie nicht mit ** "" ** übereinstimmen möchten, verwenden Sie ** + **, das mehr als einem Zeichen entspricht.
str = "Ah ah "Ah" I "Uu" Yeah "Oh" Kaka """
puts str.scan(/「.+?」/)
=>"A" "Uu" "Oh"
Wenn Sie mit ** "" ** übereinstimmen möchten, verwenden Sie ***, das mit 0 oder mehr Zeichen übereinstimmt.
str = "Ah ah "Ah" I "Uu" Yeah "Oh" Kaka """
puts str.scan(/「.*?」/)
=>"A" "Uu" "Oh" ""
C'est fini :sweat_smile: