Python/Cython Boyer-Moore string-search algorithm
Project description
pybmoore
Python/Cython implementation of Boyer-Moore string-search algorithm.
Installing
Install and update using pip:
pip install pybmoore
Usage
Single term
The search method in the pybmoore
module will return a list of tuples with all occurrences, where the tuple have the initial and final position. For example:
import pybmoore
TEXT = "The Boyer–Moore string-search algorithm is an efficient string-searching algorithm that is the standard benchmark for practical string-search literature."
matches = pybmoore.search('string', TEXT)
print(f"Occurrences: {len(matches)}")
print(matches)
# output: [(16, 22), (56, 62), (128, 134)]
for x, y in matches:
print(f"({x},{y}) - {TEXT[x:y]}")
notice: this implemenation it's case sensitive.
import pybmoore
TEXT = "The algorithm preprocesses the string being searched for (the pattern), but not the string being searched in (the text). It is thus well-suited for applications in which the pattern is much shorter than the text or where it persists across multiple searches."
pybmoore.search('algorithm', TEXT)
# output: [(4, 13)]
pybmoore.search('Algorithm', TEXT)
# output: []
Multiple terms
import pybmoore
TEXT = "The Boyer-Moore algorithm searches for occurrences of P in T by performing explicit character comparisons at different alignments. Instead of a brute-force search of all alignments (of which there are m − n + 1, Boyer-Moore uses information gained by preprocessing P to skip as many alignments as possible."
pybmoore.search(['brute-force', 'Boyer-Moore'], TEXT)
print(matches)
# output: {'brute-force': [(144, 155)], 'Boyer-Moore': [(4, 15), (212, 223)]}
Development
To build pybmoore locally first install requirements-dev.txt
dependencies and run:
make build USE_CYTHON=1
# or
# make build
Type make
in the command line to see all available targets.
Links
- License: Apache License
- Code: https://github.com/amenezes/pybmoore
- Issue tracker: https://github.com/amenezes/pybmoore/issues
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
pybmoore-1.0.0.tar.gz
(46.9 kB
view hashes)