Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PreSuf(3)	      User Contributed Perl Documentation	     PreSuf(3)

       Regex::PreSuf - create regular expressions from word lists

	       use Regex::PreSuf;

	       my $re =	presuf(qw(foobar fooxar	foozap));

	       # $re should be now 'foo(?:zap|[bx]ar)'

       The presuf() subroutine builds regular expressions out of 'word lists',
       lists of	strings.  The regular expression matches the same words	as the
       word list.  These regular expressions normally run faster than a
       simple-minded '|'-concatenation of the words.



		   'foobar fooxar' => 'foo[bx]ar'


		   'foobar foozap' => 'foo(?:bar|zap)'


		   'foobar fooar'  => 'foob?ar'

       The downsides:

       o   The original	order of the words is not necessarily respected, for
	   example because the character class matches are collected together,
	   separate from the '|' alternations.

       o   The module blithely ignores any specialness of any regular
	   expression metacharacters such as the ".*?+{}[]^$", they are	just
	   plain ordinary boring characters.

       For the second downside there is	an exception.  The module has some
       rudimentary grasp of how	to use the 'any	character' metacharacter.  If
       you call	presuf() like this:

	       my $re =	presuf({ anychar=>1 }, qw(foobar	fooxar));

	       # $re should be now ''

       The module finds	out the	common prefixes	and suffixes of	the words and
       then recursively	looks at the remaining differences.  However, by
       default only common prefixes are	used because for many languages
       (natural	or artificial) this seems to produce the fastest matchers.  To
       allow also for suffixes use

	       my $re =	presuf({ suffixes=>1 },	...);

       To use only suffixes use

	       my $re =	presuf({ prefixes=>0 },	...);

       (this implicitly	enables	suffixes)

       In case you want	to flood your session without debug messages you can
       turn on debugging by saying


       How to turn them	off again is left as an	exercise for the kind reader.

       Jarkko Hietaniemi

       This code is distributed	under the same copyright terms as Perl itself.

perl v5.32.1			  2006-02-26			     PreSuf(3)


Want to link to this manual page? Use this URL:

home | help