easy-expressions 0.1.1
Really, really easy regular expressions for python.
License: MIT License

.. figure:: http://i.imgur.com/N7uilEZ.png
   :alt: Easy does it!

   Easy does it!

easy-expressions |Build Status|
===============================

The world's most gangsta regular expressions library.

It turns this..

.. code:: python


    regex = re.compile(r'(?:(?:\$){1,1})(?:(?:(?:\d)){1,})(?:(?:\.){1,1})(?:\d)(?:\d)')

into this!

.. code:: python

    from easy_expressions import Easy

    easy = Easy() / 
      .find("$") /
      .min(1).digits() /
      .then(".") /
      .digit() /
      .digit()

    regex = easy.getRegex()
    regex.findall("$10.00");

About
-----

*easy-expressions* is a python regular expressions library with a
`Python for
Humans <https://speakerdeck.com/kennethreitz/python-for-humans>`__
philosophy. Rather than having to remember the complex regular
expressions syntax, *easy-expressions* allows you to write complicated
regular expressions in natural English, so you'll get your pattern
matches right the first time without any headache.

Installation
------------

::

    pip install easy-expressions

Examples
--------

Searching for dollar amounts
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code:: python

    from easy_expressions import Easy

    easy = Easy() / 
      .find("$") /
      .min(1).digits() /
      .then(".") /
      .digit() /
      .digit()

    regex.test("$10.00"); # True
    regex.test("$XX.YZ"); # False

Searching for Credit Cards
~~~~~~~~~~~~~~~~~~~~~~~~~~

.. code:: python


    easy = Easy() \
            .startOfLine() \
            .exactly(4).digits() \
            .then('-') \
            .exactly(4).digits() \
            .then('-') \
            .exactly(4).digits() \
            .then('-') \
            .exactly(4).digits()

    input_s = "Hey Joe! The credit card number for the invoice is 4444-5555-6666-7777. Thanks!"
    easy.test(input_s) # True

    input_s = "Hey Joe! The credit card number for the invoice is 1-2-3-4. Thanks!"
    easy.test(input_s) # False

Inspiration
-----------

Regexes are hard when they should be easy.

I had this idea while watching Straight Outta Compton. Turns out
[@thebinarysearchtree](https://github.com/thebinarysearchtree/) had
already `implemented it in
JS <https://github.com/thebinarysearchtree/regexpbuilderjs>`__, so this
is essentially a port of that.

Contributing
------------

This software is still quite young and I'm certain there are still bugs
in it. If you find bugs or want new features included, please create a
new Issue and send a pull request, along with an accompanying test.
Thanks!

Other Easy Projects
-------------------

If you like easy things, you may also enjoy:

-  `django-easy-api <https://github.com/Miserlou/django-easy-api>`__
-  `django-easy-split <https://github.com/Miserlou/django-easy-split>`__
-  `django-easy-timezones <https://github.com/Miserlou/django-easy-timezones>`__
-  `django-knockout-modeler <https://github.com/Miserlou/django-knockout-modeler>`__
-  `simpleaws <https://github.com/Miserlou/simpleaws>`__

License
-------

MIT, 2015.

.. |Build Status| image:: https://travis-ci.org/Miserlou/easy-expressions.svg
   :target: https://travis-ci.org/Miserlou/easy-expressions