All Projects → Miserlou → easy-expressions

Miserlou / easy-expressions

Licence: other
Easy Regular Expressions for Python

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects

Easy does it!

easy-expressions Build Status

The world's most gangsta regular expressions library.

It turns this..

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

into this!

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 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

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

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 had already implemented it in JS, 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:

License

MIT, 2015.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].