in reply to Extracting string based on comparison to second string?
orTHAETURQU .LLL..RRR HA,AE JURYATAUTIOPW .LLL...LL.RRR UR,RY,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,QN,NQ,MN,NH,HF
THAETURQU .LLL..RRR HA JURYATAUTIOPW .LLL...LL.RRR UR,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,NQ,MN,HF
kennethk assumed the latter. The following handles the former:
#!/usr/bin/perl use strict; use warnings; my @patterns = qw( .LLL LLLL .RRR RRRR LL ); chomp( my @file = <DATA> ); for my $pat (@patterns) { print("pattern = $pat\n"); our $string; our @matches; my $re = do { use re 'eval'; qr/ \Q$pat\E (?{ my $start = $-[0]; my $end = $+[0]; push @matches, substr($string, $start, $end - $start); }) (?!) /x }; for my $line (@file) { (local $string, my $mask) = split(/\s+/, $line, 2); local @matches; $mask =~ $re; local $" = ","; print "$line\t@matches\n"; } print("\n"); } __DATA__ THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL
pattern = .LLL THAETURQU .LLL..RRR THAE JURYATAUTIOPW .LLL...LL.RRR JURY TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL OWQN,WMNH pattern = LLLL THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQNQ,MNHF pattern = .RRR THAETURQU .LLL..RRR URQU JURYATAUTIOPW .LLL...LL.RRR IOPW TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL pattern = RRRR THAETURQU .LLL..RRR JURYATAUTIOPW .LLL...LL.RRR TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL pattern = LL THAETURQU .LLL..RRR HA,AE JURYATAUTIOPW .LLL...LL.RRR UR,RY,UT TURIWOWQNQQUTYRIOPWMNHF L..L..LLLL.LL.R..L.LLLL WQ,QN,NQ,UT,MN,NH,HF
|
|---|