NAME
Parse::RandGen::Regexp - Regular expression Condition element.
DESCRIPTION
Regexp is a Condition element that matches the given compiled regular expression. For picking random data, the regular expression is parsed into its component Subrules, Literals, CharClasses, etc.... Therefore, the pick functionality for a regular expression is ultimately the same as the pick functionality of a Rule (including the limitations w/r to greediness - see Rule).
Regexp is also useful as a standalone class. It supports captures (named and indexed), which can be referenced in a call to the pick() function to force the captures to match the specified data, while leaving the rest of the data to be generated randomly.
METHODS
- new
-
Creates a new Regexp. The first argument (required) is the regular expression element (e.g. qr/foo(bar|baz)+\d{1,10}/). All other arguments are named pairs.
- element
-
Returns the Regexp element (i.e. the compiled regular expression itself).
- numCaptures
-
Returns the number of captures (e.g. $1, $2, ...$n) in the regular expression.
- nameCapture
-
Give names to capture numbers for the regular expression. The arguments to this function are capture# => "name" pairs (e.g. nameCapture(1=>"directory", 2=>"file", 3=>"extension")).
- capture
-
Returns the Rule object that represents the specified capture. The capture can be specified by number or by name (the name is set by the nameCapture() function).
- pick
-
Randomly generate data (text) that matches (or does not) this regular expression.
Takes a "match" boolean argument that specifies whether to match the regular expression or deliberately not match it.
Also takes a "captures" hash argument that has pairs of capture numbers (or names) and their desired value. This allows the generated data to have user-specified constraints while allowing the rest of the regular expression to choose random data. If "match" is false, the user-specified "captures" values are still used (which may cause the data to match even though it was not supposed to).
Example: $re->pick(match=>1, captures=>{ 1=>"http", 2=>"www", 3=>"yahoo", 4=>"com" });
SEE ALSO
Parse::RandGen::Condition, Parse::RandGen::Subrule, Parse::RandGen::Literal, Parse::RandGen::CharClass, Parse::RandGen::Rule, Parse::RandGen::Production, and Parse::RandGen
AUTHORS
Jeff Dutton