Skip to main content

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.

Metadata

Release files for esmre 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for esmre 1.0.1
File Size Uploaded
esmre-1.0.1.tar.gz 56.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for esmre 1.0.1
File Interpreter ABI Platform
esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl CPython 3.11 CPython 3.11 macOS 13.0+ ARM64 Details

Total release size: 85.8 kB

Release files / esmre-1.0.1.tar.gz

Download URL esmre-1.0.1.tar.gz
Size 56.8 kB
Tags Source
SHA-256 checksum
How to use checksums
4ec618d563ce1f9ecc43152c8de13756948e49d696b12707963f173d715ac952
BLAKE2b-256 checksum
How to use checksums
102afd4dc88e09035757ef15f5380b08bdf9ec3339289e8fe80d27337533e2f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release files / esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl

Download URL esmre-1.0.1-cp311-cp311-macosx_13_0_arm64.whl
Size 29.1 kB
Tags CPython 3.11 macOS 13.0+ ARM64
SHA-256 checksum
How to use checksums
691e0e87127920112d45635ce4cd4f2f18db6368b902aeff47272959b1a6d2e7
BLAKE2b-256 checksum
How to use checksums
78bab9887002e5f6cd2e28c8dbcef498b2b108d65e8e7204b0059a18245b57a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.3

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files

1.0

1 release file

0.5.2

1 release file

0.5

1 release file

0.3.1

1 release file

0.3.0

0.2.1

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page