Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

Re: Matching against a partially known string

by sandfly (Beadle)
on Sep 19, 2003 at 21:58 UTC ( #292769=note: print w/replies, xml ) Need Help??

in reply to Matching against a partially known string

If the patterns are all simple, one approach would be to represent each pattern as a list of atoms, and test whether a partial pattern can consume the buffer:

my @re= qw( [abc] b+ c ); my @tests = qw( a ab ba bb bbbbbcdef bbbbbbg ); TEST: foreach my $buff ( @tests ) { my @tre = @re; my $tre = ""; while (@tre > 1) { $tre .= shift @tre; if ( $buff =~ m/^$tre$/ ) { print "Test string '$buff' matched partial pattern, $tre\n +"; next TEST; } } $tre .= shift @tre; if ( $buff =~ m/^$tre/ ) { print "Test string '$buff' matched whole pattern, $tre\n"; } else { print "Test string '$buff' did not match pattern $tre\n"; } }

This method will fail if you use alternation, or atoms with a minumum length > 1, such as "a{5}".

Replies are listed 'Best First'.
Re: Re: Matching against a partially known string
by wonkozen (Initiate) on Sep 20, 2003 at 15:51 UTC

    Ahh, not a horrible idea for simple patterns. I would need to add a ^ at the beginning and maintain a $ at the end of the RE. For a simple enough pattern I could even generate the partial REs programatically. Alas, it would be tougher to deal with quantifiers, capturing groups, etc, and, alas, I am quite the fan of quantifiers.

    (It took me a while to recognize what you were suggesting. I didn't notice the ".=" in $tre .= shift @tre.)

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (5)
As of 2022-01-22 09:25 GMT
Find Nodes?
    Voting Booth?
    In 2022, my preferred method to securely store passwords is:

    Results (62 votes). Check out past polls.