Skip to main content

Regular expression accelerator

Project description

esmre - Efficient String Matching Regular Expressions

esmre is a Python module that can be used to speed up the execution of a large collection of regular expressions. It works by building a index of compulsory substrings from a collection of regular expressions, which it uses to quickly exclude those expressions which trivially do not match each input.

Here is some example code that uses esmre:

>>> import esmre
>>> index = esmre.Index()
>>> index.enter(r"Major-General\W*$", "savoy opera")
>>> index.enter(r"\bway\W+haye?\b", "sea shanty")
>>> index.query("I am the very model of a modern Major-General.")
['savoy opera']
>>> index.query("Way, hay up she rises,")
['sea shanty']
>>> 

The esmre module builds on the simpler string matching facilities of the esm module, which wraps a C implementation some of the algorithms described in Aho's and Corasick's paper on efficient string matching [Aho, A.V, and Corasick, M. J. Efficient String Matching: An Aid to Bibliographic Search. Comm. ACM 18:6 (June 1975), 333-340]. Some minor modifications have been made to the algorithms in the paper and one algorithm is missing (for now), but there is enough to implement a quick string matching index.

Here is some example code that uses esm directly:

>>> import esm
>>> index = esm.Index()
>>> index.enter("he")
>>> index.enter("she")
>>> index.enter("his")
>>> index.enter("hers")
>>> index.fix()
>>> index.query("this here is history")
[((1, 4), 'his'), ((5, 7), 'he'), ((13, 16), 'his')]
>>> index.query("Those are his sheep!")
[((10, 13), 'his'), ((14, 17), 'she'), ((15, 17), 'he')]
>>> 

You can see more usage examples in the tests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

esmre-1.0.1.tar.gz (56.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl (29.1 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

File details

Details for the file esmre-1.0.1.tar.gz.

File metadata

  • Download URL: esmre-1.0.1.tar.gz
  • Upload date:
  • Size: 56.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for esmre-1.0.1.tar.gz
Algorithm Hash digest
SHA256 4ec618d563ce1f9ecc43152c8de13756948e49d696b12707963f173d715ac952
MD5 16f6514f8a0a268329ff2e3f69733ffd
BLAKE2b-256 102afd4dc88e09035757ef15f5380b08bdf9ec3339289e8fe80d27337533e2f8

See more details on using hashes here.

File details

Details for the file esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 691e0e87127920112d45635ce4cd4f2f18db6368b902aeff47272959b1a6d2e7
MD5 fc798ba3c9634d4794040aaf4bc5b01b
BLAKE2b-256 78bab9887002e5f6cd2e28c8dbcef498b2b108d65e8e7204b0059a18245b57a0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page