Beefy Boxes and Bandwidth Generously Provided by pair Networks
Keep It Simple, Stupid
 
PerlMonks  

Re: Regex to compare (if) two strings (Uniquely - I will explain inside)

by AnomalousMonk (Canon)
on Nov 25, 2012 at 11:53 UTC ( #1005478=note: print w/replies, xml ) Need Help??


in reply to Regex to compare (if) two strings (Uniquely - I will explain inside)

In a similar vein to this, another regex approach. I hesitate to offer it because I'm not sure the increased complexity pays off. More effort is spent in building the thing, but despite being significantly larger, the final regex may run more quickly versus the repeated compilation and invocation of the shorter  s/// of the previous link. However, it may take operation on rather long strings for any advantage to become manifest. I have done no benchmarking, but at least it's tested and works. The dreams of regexen produce monsters.

sub scrabblicious { my ($word, # word to test for proper match to tray of letters $tray, # string with 'tray' of letters to select from ) = @_; return unless # handles word empty string (my $rx = join '', sort split '', $word) =~ s{ (.) \1* } { $+[0] - $-[0] > 1 ? qq/(?= (?: .*? \Q$1\E){@{[ $+[0] - $-[0] ]}})/ : qq/(?= .*? \Q$1\E)/ }xmseg; return $tray =~ m{ \A $rx }xms; }

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1005478]
help
Chatterbox?
[Corion]: A good daypart!
Corion feels slightly bad for initiating a discussion yesterday and then running away. I guess I should write that up as a meditation or SoPW
[Corion]: Not the "running away" part but the question+ discussion about IO-less HTTP modules
[Corion]: (or how/where to patch AnyEvent::HTTP or LWP::UserAgent to take control of both the callstack and the data transfer)

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2016-12-08 09:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    On a regular basis, I'm most likely to spy upon:













    Results (137 votes). Check out past polls.