Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Problem with regex wildcard operator (.)...?

by AnomalousMonk (Archbishop)
on Sep 06, 2021 at 06:06 UTC ( [id://11136494]=note: print w/replies, xml ) Need Help??


in reply to Problem with regex wildcard operator (.)...?

BTW: If you are going to do matching against a word list after the words in the list have had their letters sorted into alpha order and if you will do many matches against the same word list, it will be (possibly much) more efficient to first build a hash of all sorted versus native words.

Win8 Strawberry 5.8.9.5 (32) Mon 09/06/2021 1:53:18 C:\@Work\Perl\monks >perl -Mstrict -Mwarnings use Data::Dump qw(dd); # for debug my @words = ( # added a few extra 'words' '', 'x', 'a', 's', 'aa', 'as', 'es', 'is', 'os', 'sh', 'si', 'so' ); dd '@words:', \@words; # for debug # map words to sorted words. my %sorted = map { $_ => join('', sort split //) } @words; dd 'sorted words hash:', \%sorted; # for debug print "----------------------------\n"; for my $regex (qw(.?a? a?.? s?.? .?s?)) { my $rx_full = qr{ ^ $regex $ }x; # faster if used often # my $rx_full = qr{ \A $regex \z }xms; # i prefer \A \z \Z and /xms + tail print "Matches for FULL regex pattern: $rx_full \n"; for my $word (@words) { print "'$sorted{$word}' -> '$word' " if $sorted{$word} =~ $rx +_full; } print "\n----------------------------\n"; } ^Z ( "\@words:", ["", "x", "a", "s", "aa", "as", "es", "is", "os", "sh", "si", "so"], ) ( "sorted words hash:", { "" => "", "a" => "a", "aa" => "aa", "as" => "as", "es" => "es", "is" => "is", "os" => "os", "s" => "s", "sh" => "hs", "si" => "is", "so" => "os", "x" => "x", }, ) ---------------------------- Matches for FULL regex pattern: (?x-ism: ^ .?a? $ ) '' -> '' 'x' -> 'x' 'a' -> 'a' 's' -> 's' 'aa' -> 'aa' ---------------------------- Matches for FULL regex pattern: (?x-ism: ^ a?.? $ ) '' -> '' 'x' -> 'x' 'a' -> 'a' 's' -> 's' 'aa' -> 'aa' 'as' -> 'a +s' ---------------------------- Matches for FULL regex pattern: (?x-ism: ^ s?.? $ ) '' -> '' 'x' -> 'x' 'a' -> 'a' 's' -> 's' ---------------------------- Matches for FULL regex pattern: (?x-ism: ^ .?s? $ ) '' -> '' 'x' -> 'x' 'a' -> 'a' 's' -> 's' 'as' -> 'as' 'es' -> 'e +s' 'is' -> 'is' 'os' -> 'os' 'hs' -> 'sh' 'is' -> 'si' 'os' -> ' +so' ----------------------------


Give a man a fish:  <%-{-{-{-<

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11136494]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others lurking in the Monastery: (5)
As of 2024-04-25 14:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found