Ich habe diesen Text (gekürzte Version meiner ursprünglichen Text):Warum druckt Perl nicht alle Regex-Übereinstimmungen in einem mehrzeiligen Regex?
MyText.txt BAHJSBUBGUCYHAGSBUCAGSUCBASBCYHUBXZCZPZHCUIHAUISHCIUJXZJCBZYAUSGHDYUAGWEBWHBHJASBHJASCXZBUYTRTRTRJFUARGAFGOOPWWKBBCAAAABBXHABSDAUSBCZAAAAAAAAACGAFAXHJBJHXZCXZCCZCXZUCAGSUCBASBCYHUBXZCZPZHCUIHAUISHCIUJXZJCBZYAUSGHDYUAGWEBWHBHJASBHJASCXZBUYHABSDAUSZXHJBRRRRRRJFUABGAFGLLPKWAACAAAABBZJHXZXHJBJHXZXHJBJHXJBJHXZCXZCCZCXZUCAGSAJIJICXZIJUAUUISUSJUSSJSJSJAJCXZXCZTTTTTRJFUABGAFGLOPKWABCAAAABBU
Mein Code ist die folgende, whic h beabsichtigt, alle Übereinstimmungen zu drucken und sie dann in einer Datei zu speichern. Aber ich bekomme keine Übereinstimmungen, solange ich dort mindestens 10 in meiner ursprünglichen Datei habe.
open(text, "<mytext.txt");
push (@matches,$&) while(<text> =~ m{
([TR]{6}
JFUA
[ABR]{1}
GAFG
([LOP]{2,3})
[KW]{2,5}
(??{ $2 =~ tr/LOP/ABC/r })
AAAABB[UXZ]{1})
/g
}x);
print "@matches\n";
my $filename = 'results_matches.txt';
open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
print $fh "@matches\n";
close $fh;
print "done\n";
Ich habe auch versucht, den folgenden Code und das funktioniert auch nicht:
my @matches = <text> =~ m{
([TR]{6}
JFUA
[ABR]{1}
GAFG
([LOP]{2,3})
[KW]{2,5}
(??{ $2 =~ tr/LOP/ABC/r })
AAAABB[UXZ]{1})
/g
}x;
print "@matches\n";
ich den folgenden Code haben, der nur erfolgreich ein ausdruckt (die erste) Ergebnis. Aber es schlägt fehl, alle Übereinstimmungen zu drucken.
if (<text> =~ m{
([TR]{6}
JFUA
[ABR]{1}
GAFG
([LOP]{2,3})
[KW]{2,5}
(??{ $2 =~ tr/LOP/ABC/r })
AAAABB[UXZ]{1})
}x) {print "$1\n";}
ich die Antworten in diesem Thema verfolgt habe, aber nicht in der Lage gewesen, einer von ihnen zu arbeiten: How can I find all matches to a regular expression in Perl?