Betrachten Sie dieses nicht gierige Matching; gegeben:Perl nicht gierig passend
my $seq = "STARTblablablablaSTARTblablablablaSTOP";
I STARTblablablablaSTOP
nicht gierig übereinstimmen soll.
Ich habe versucht, die folgenden:
($match) = $seq =~ m/(START.*?STOP)/;
($match) = $seq =~ m/(START(.*)?STOP)/;
($match) = $seq =~ m/(START.+?STOP)/;
Aber $ passen immer auf die gesamte Zeichenfolge zugeordnet ist, das heißt
STARTblablablablaSTARTblablablablaSTOP
Was bin ich?
Es ist, weil $ Hit die erste Capture-Variable zugewiesen ist, die alles entspricht. Was versuchst du zu erreichen? – sln
Warum suchen Sie nicht einfach nach der gesuchten Zeichenfolge 'TTATGCCCACACACACCCACTCACCCATT'? oder ist ein Teil dieser String-Dynamik? Du könntest '. * (TTAT. *)', Wenn du das letzte Vorkommen von 'TTAT' willst, dann alles andere. – chris85
Und der Grund, warum alles passt, ist, dass es nur einen Teilstring 'CCATT' gibt, der so gierig ist oder nicht, dass er allem entspricht. – sln