Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: Progressive pattern matching

by chipmunk (Parson)
on Oct 14, 2001 at 19:14 UTC ( [id://118756]=note: print w/replies, xml ) Need Help??


in reply to Progressive pattern matching

Here's one way to do it, given an input string such as 'abcde'. The program tries matching the one-character substring, then the two-character substring, and so on until it fails to match or the entire input string has been matched.
#!/usr/local/bin/perl -w use strict; print "Name of file containing various random strings?\n"; chomp (my $file = <STDIN>); open (MOTIF, "$file") || die "$!"; print "String to search with?\n"; chomp (my $blocks = <STDIN>); my $motif; { local $/; $motif = <MOTIF>; } my $i = 1; my $re = substr($blocks, 0, $i); while ($i <= length $blocks and $motif =~ /\Q$re/) { $re = substr($blocks, 0, ++$i); } chop $re if $i <= length $blocks; print "$re\n";
To handle an input string like '(a|b)(b|c)(c|d|e)', you could use a similar approach, perhaps storing the possible characters for each position in an array of arrays, and iterating over each sub-array to construct the regexes.

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others imbibing at the Monastery: (4)
As of 2024-04-23 21:12 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found