Metadata-Version: 2.1
Name: exrex
Version: 0.12.0
Summary: Irregular methods for regular expressions
Home-page: https://github.com/asciimoo/exrex
Author: Adam Tauber
Author-email: asciimoo@gmail.com
License: AGPLv3+
Download-URL: https://github.com/asciimoo/exrex/tarball/master
Description: 
        EXREX
        =====
        
        Irregular methods for regular expressions.
        
        Exrex is a command line tool and python module that generates all - or random - matching strings to a given regular expression and more.
        It's pure python, without external dependencies.
        
        There are regular expressions with infinite matching strings (eg.: `[a-z]+`), in these cases exrex limits the maximum length of the infinite parts.
        
        Exrex uses generators, so the memory usage does not depend on the number of matching strings.
        
        [![Version](https://img.shields.io/pypi/v/exrex.svg)](https://crate.io/packages/exrex/)   [![Downloads](https://img.shields.io/pypi/dm/exrex.svg)](https://crate.io/packages/exrex/)
        
        *Features*
        
         * Generating all matching strings
         * Generating a random matching string
         * Counting the number of matching strings
         * Simplification of regular expressions
        
        
        ### Installation
        
        
        To install exrex, simply:
        
        ```bash
        $ pip install exrex
        ```
        
        or
        
        ```bash
        $ easy_install exrex
        ```
        
        
        Usage
        =====
        
        ### as python module
        
        ```python
        >>> import exrex
        
        >>> exrex.getone('(ex)r\\1')
        'exrex'
        
        >>> list(exrex.generate('((hai){2}|world!)'))
        ['haihai', 'world!']
        
        >>> exrex.getone('\d{4}-\d{4}-\d{4}-[0-9]{4}')
        '3096-7886-2834-5671'
        
        >>> exrex.getone('(1[0-2]|0[1-9])(:[0-5]\d){2} (A|P)M')
        '09:31:40 AM'
        
        >>> exrex.count('[01]{0,9}')
        1023
        
        >>> print '\n'.join(exrex.generate('This is (a (code|cake|test)|an (apple|elf|output))\.'))
        This is a code.
        This is a cake.
        This is a test.
        This is an apple.
        This is an elf.
        This is an output.
        
        >>> print exrex.simplify('(ab|ac|ad)')
        (a[bcd])
        ```
        
        ### Command line usage
        
        ```
        > exrex --help
        usage: exrex.py [-h] [-o FILE] [-l] [-d DELIMITER] [-v] REGEX
        
        exrex - regular expression string generator
        
        positional arguments:
          REGEX                 REGEX string
        
        optional arguments:
          -h, --help            show this help message and exit
          -o FILE, --output FILE
                                Output file - default is STDOUT
          -l N, --limit N       Max limit for range size - default is 20
          -c, --count           Count matching strings
          -m N, --max-number N  Max number of strings - default is -1
          -r, --random          Returns a random string that matches to the regex
          -s, --simplify        Simplifies a regular expression
          -d DELIMITER, --delimiter DELIMITER
                                Delimiter - default is \n
          -v, --verbose         Verbose mode
        ```
        
        Examples:
        
        ```
        $ exrex '[asdfg]'
        a
        s
        d
        f
        g
        
        $ exrex -r '(0[1-9]|1[012])-\d{2}'
        09-85
        
        $ exrex '[01]{10}' -c
        1024
        
        ```
        
        ### Bugs
        
        Bugs or suggestions? Visit the [issue tracker](https://github.com/asciimoo/exrex/issues).
        
        
        ### Documentation
        
        http://exrex.readthedocs.org/en/latest/
        
        ### TODO
        
         * Command line switches to change default character sets/ranges/range limits (eg. for '.','\s'..) (40%)
         * Extend categories (`re.sre_parse.CATEGORIES`) (30%)
         * Improve setup.py
         * More verbose code
         * Documentation
         * Optimizations
         * Generation of `n` different random matching string
         * Memory usage reduction (100%?) - generators
         * Count the number of matching strings - (100%?)
         * Unicode support (100%)
         * Handle grouprefs (100%)
         * Python3 compatibility (100%) ( >= python3.3)
        
        
        ### License
        
        ```
        exrex is free software: you can redistribute it and/or modify
        it under the terms of the GNU Affero General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.
        
        exrex is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU Affero General Public License for more details.
        
        You should have received a copy of the GNU Affero General Public License
        along with exrex. If not, see < http://www.gnu.org/licenses/ >.
        
        (C) 2012- by Adam Tauber, <asciimoo@gmail.com>
        ```
        
        ### Fun/arts
        
         * Boat: `exrex '( {20}(\| *\\|-{22}|\|)|\.={50}| (  ){0,5}\\\.| {12}~{39})'`
         * Eyes: `exrex '(o|O|0)(_)(o|O|0)'`
        
        ### Similar projects
        
        Tools that generate a list of all possible strings that match a given pattern:
        * [regldg](http://regldg.com/)
          (features a live demo on the website)
        * [regex-genex](https://github.com/audreyt/regex-genex)
          (supports using multiple regex patterns simultaneously)
        
        Tools that generate random strings, one by one, that match a given pattern:
        * [randexp.js](http://fent.github.com/randexp.js/)
          (features several live demos on the website)
        * [rstr.xeger](https://bitbucket.org/leapfrogdevelopment/rstr/src#rst-header-xeger)
          (a method of the `rstr` Python module)
        
        ### Profiling
        
         * `python -m cProfile exrex.py '[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]' -o /dev/null`
         * `python -m cProfile exrex.py '[0-9]{6}' -o /dev/null`
        
Keywords: regexp generators string generation regex simplification
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Topic :: Utilities
Classifier: Environment :: Console
Classifier: License :: OSI Approved :: GNU Affero General Public License v3
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2
Classifier: Programming Language :: Python :: 2.6
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Description-Content-Type: text/markdown
