regex-genex-0.6.2: From a regex, generate all possible strings it can match

Safe HaskellNone



This module and the accompanying genex program finds all permutations of strings that matches every input regular expressions, ordered from shortest to longest, with full support for back references ('\1' .. '\9') and word boundaries ('\b').

It requires the z3 or yices binary in PATH. The latter may be downloaded from:



data Model Source

A match consists of a string (list of codepoints), and a rank representing alternation order.




modelChars :: [Word8]
modelRank :: Word64


genex :: [String] -> IO [String] Source

Given a list of regular repressions, returns all possible strings that matches every one of them. Guarantees to return shorter strings before longer ones.

genexPure :: [String] -> [String] Source

A pure and much faster variant of genex, but without support for back-references, anchors or word boundaries. Does not guarantee orders about length of strings. Does not depend on the external yices SMT solver.

genexPrint :: [String] -> IO () Source

Same as genexModels, but print the models to standard output instead.

genexModels :: [String] -> IO [Model] Source

Same as genex, but with the entire model returned instead.

genexWith :: (?maxRepeat :: Int, Monoid a) => ([SatResult] -> Hits -> (Hits -> IO a) -> IO a) -> [[Char]] -> IO a Source

regexMatch :: (?maxRepeat :: Int) => [[Char]] -> Str -> Symbolic SBool Source