in reply to Re: Regex: finding all possible substrings
in thread Regex: finding all possible substrings
and see if it matches some permutation
Of course, we're all kind of guessing here because that isn't exactly a well-written spec... but I think assuming he wants all permutations is a bit of a leap. I think it may also be a leap to assume he only wants to search for strings of a certain length. He just says that they are "user defined."
I still think this is the right approach though, he just has to track the lengths of his needles and be sure to check substrings of each necessary length (so long as it doesn't go off the end of his haystack.)
Something like this:
#!/usr/bin/perl use warnings; use strict; my $haystack = shift; my %needles; undef @needles{@ARGV}; my @len = sort {$a<=>$b} keys %{{ map { (length,0) } keys %needles }}; my $pos = 0; my $hlen = length $haystack; while ($pos + $len[0] <= $hlen) { for my $L (@len) { last if $pos + $L > $hlen; my $substr = substr($haystack, $pos, $L); $needles{$substr}++ if exists $needles{$substr}; } $pos++; } use Data::Dumper; print Dumper \%needles;
Update:
$ ./973643.pl 'AAAAA AAACACA CAACAAA' AAA AAC ACA CAA $VAR1 = { 'AAC' => 2, 'ACA' => 3, 'CAA' => 2, 'AAA' => 5 };
-sauoq
"My two cents aren't worth a dime.";
"My two cents aren't worth a dime.";
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^3: Regex: finding all possible substrings
by davido (Cardinal) on Jun 01, 2012 at 00:17 UTC | |
by sauoq (Abbot) on Jun 01, 2012 at 00:28 UTC |
In Section
Seekers of Perl Wisdom