私は、このテキスト(私のオリジナルテキストの短縮バージョン)を持っている:なぜPerlは複数行の正規表現ですべての正規表現の一致を表示しないのですか?
mytext.txt BAHJSBUBGUCYHAGSBUCAGSUCBASBCYHUBXZCZPZHCUIHAUISHCIUJXZJCBZYAUSGHDYUAGWEBWHBHJASBHJASCXZBUYTRTRTRJFUARGAFGOOPWWKBBCAAAABBXHABSDAUSBCZAAAAAAAAACGAFAXHJBJHXZCXZCCZCXZUCAGSUCBASBCYHUBXZCZPZHCUIHAUISHCIUJXZJCBZYAUSGHDYUAGWEBWHBHJASBHJASCXZBUYHABSDAUSZXHJBRRRRRRJFUABGAFGLLPKWAACAAAABBZJHXZXHJBJHXZXHJBJHXJBJHXZCXZCCZCXZUCAGSAJIJICXZIJUAUUISUSJUSSJSJSJAJCXZXCZTTTTTRJFUABGAFGLOPKWABCAAAABBU
私のコードは次のよう、whicですhはすべてのマッチを印刷してファイルに保存することを意図しています。しかし、私はそこに私のオリジナルのファイルに少なくとも10であることを除いて、私は一致を得ることはありません。
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";
Iはまた、次のコードを試しており、これも動作しない。
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";
Iが正常に一つだけ(最初の)結果を出力次のコードを有しています。しかし、それはすべてのマッチを印刷することができません。
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";}
私はこのトピックで回答が続いているが、それらのいずれかの作業を取得することができませんでした:How can I find all matches to a regular expression in Perl?