Skip to main content

abnf-to-regexp

Check on push to main Test coverage PyPI - version PyPI - Python Version

The program abnf-to-regexp converts augmented Backus-Naur form (ABNF) to a regular expression.

Motivation

For a lot of string matching problems, it is easier to maintain an ABNF grammar instead of a regular expression. However, many programming languages do not provide parsing and matching of ABNFs in their standard libraries. This tool allows you to write your grammars in ABNF and convert it to a regular expression which you then include in your source code.

It is based on abnf Python module, which is used to parse the ABNFs.

After the parsing, we apply a series of optimizations to make the regular expression a bit more readable. For example, the alternations of character classes are taken together to form a single character class.

--help

usage: abnf-to-regexp [-h] -i INPUT [-o OUTPUT]
                      [--format {single-regexp,python-nested}]

Convert ABNF grammars to Python regular expressions.

optional arguments:
  -h, --help            show this help message and exit
  -i INPUT, --input INPUT
                        path to the ABNF file
  -o OUTPUT, --output OUTPUT
                        path to the file where regular expression is stored;
                        if not specified, writes to STDOUT
  --format {single-regexp,python-nested}
                        Output format; for example a single regular expression
                        or a code snippet

Example Conversion

Please see test_data/nested-python/rfc3987/grammar.abnf for an example grammar.

The corresponding generated code, e.g., in Python, is stored at test_data/nested-python/rfc3987/expected.py.

Installation

You can install the tool with pip in your virtual environment:

pip3 install abnf-to-regexp

Development

  • Check out the repository.

  • In the repository root, create the virtual environment:

python3 -m venv venv3
  • Activate the virtual environment (in this case, on Linux):

source venv3/bin/activate
  • Install the development dependencies:

pip3 install -e .[dev]
  • Run the pre-commit checks:

python continuous_integration/precommit.py

Versioning

We follow Semantic Versioning. The version X.Y.Z indicates:

  • X is the major version (backward-incompatible),

  • Y is the minor version (backward-compatible), and

  • Z is the patch version (backward-compatible bug fix).

Metadata

Release files for abnf-to-regexp 1.2.0

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

Source distribution (sdist)

Source distribution for abnf-to-regexp 1.2.0
File Size Uploaded
abnf_to_regexp-1.2.0.tar.gz 25.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for abnf-to-regexp 1.2.0
File Interpreter ABI Platform
abnf_to_regexp-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 50.3 kB

Release files / abnf_to_regexp-1.2.0.tar.gz

Download URL abnf_to_regexp-1.2.0.tar.gz
Size 25.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c3b51771e8015adeedfcd15857ee2a9a4d0595355b672571ab1b0f2adb535a0a
BLAKE2b-256 checksum
How to use checksums
02236f3e11413bfac92688555c972a008f04cbc86b5e2e1a74649c919f2999a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / abnf_to_regexp-1.2.0-py3-none-any.whl

Download URL abnf_to_regexp-1.2.0-py3-none-any.whl
Size 24.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
63d330ebe080d4e68c252033449b0ea03be35847abf8fb17f52cd9afbed25b4d
BLAKE2b-256 checksum
How to use checksums
6f8eca543f8ba7b89a632f059c19fdbcb24a640847b3603856f0cce2de45da91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.3

1 release file

1.1.2

1 release file

1.1.1

1 release file

1.1.0

1 release file

1.0.0

1 release file

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