real-regex
A drop-in replacement for Python's re, backed by a linear-time, ReDoS-safe C++20 engine — with
bounded lookarounds that the other linear-time engines (RE2, Rust) don't have.
pip install real-regex
Drop-in for re
Import it as re and use the API you already know — compile, search, match, fullmatch, findall,
finditer, sub, subn, split, and Match.group / groups / groupdict / span / start / end:
import real as re
m = re.match(r"(\w+)@(\w+)\.(\w+)", "user@example.com")
m.group(1), m.group(2), m.group(3) # ('user', 'example', 'com')
re.findall(r"\d+", "a1 b22 c333") # ['1', '22', '333']
re.sub(r"\s+", "_", "a b c") # 'a_b_c'
Flags work the same: re.I, re.M, re.S, re.X, re.A. Unicode \w \d \s \b and IGNORECASE
case-folding follow re in text mode.
Why replace re
- No ReDoS.
re(like every backtracking engine) blows up on patterns like(a+)+bagainst a hostile input — seconds, then minutes. real-regex is a Thompson NFA simulation: linear time, always, no catastrophic backtracking, ever. - Bounded lookarounds, still linear.
(?=…)(?!…)(?<=…)(?<!…)— including variable-width lookbehind — match without backtracking. RE2 and Rust drop lookarounds to stay safe; real-regex keeps them. - Faster than
reon most work — the measured multiples (geometric mean, per-case wins and the two accepted losses) live indocs/BENCHMARKS.md§B. Sparse scans, multiline anchors and capture-dense extraction lead; a couple of high-volumesplit/tiny-anchored cases stay slower (CPython's C engine wins there). It is not the fastest engine at raw throughput — it is the safe one that is also quick.
Not re, on purpose
Strict by default — every accepted pattern is guaranteed linear. The unsupported constructs
(backreferences, conditionals, non-binary Unicode properties like \p{Bidi_Class=L}) raise real.error
rather than silently falling back to a backtracking engine, so a compiled pattern is a ReDoS-safety
guarantee, not a maybe. (\p{L} / \p{sc=Greek} / \p{scx=Grek} / \p{Alphabetic} — General_Category,
Script, Script_Extensions and the standard binary properties — are supported, a superset of stdlib
re.) Opt
into delegating those to the standard library re per call with real.compile(pat, fallback=True) (or
module-wide with real.fallback = True) — it may accept them, at the cost of the linear-time guarantee for
that pattern; Pattern.engine ("real" or "re") always tells you which backend you got. A few semantics
differ deliberately (e.g. a nullable loop's final empty capture). Full list:
Differences from Python re.
The wheel also ships the header-only C++ library — real.get_include() returns its path, so the same engine
is available to C++ via #include <real/real.hpp>. Source, benchmarks and the C++ API:
https://github.com/RECHE23/real-regex.
Release files for real-regex 2026.9.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| real_regex-2026.9.7.tar.gz | 687.0 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| real_regex-2026.9.7-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| real_regex-2026.9.7-cp311-abi3-win32.whl | CPython 3.11 | abi3 | Windows x86-32 | Details |
| real_regex-2026.9.7-cp311-abi3-musllinux_1_2_x86_64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ x86-64 | Details |
| real_regex-2026.9.7-cp311-abi3-musllinux_1_2_aarch64.whl | CPython 3.11 | abi3 | Linux musl 1.2+ ARM64 | Details |
| real_regex-2026.9.7-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.24+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| real_regex-2026.9.7-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ ARM64, Linux glibc 2.24+ ARM64 | Details |
| real_regex-2026.9.7-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
| real_regex-2026.9.7-cp311-abi3-macosx_10_9_x86_64.whl | CPython 3.11 | abi3 | macOS 10.9+ x86-64 | Details |
Total release size: 19.9 MB
Release files / real_regex-2026.9.7.tar.gz
| Download URL | real_regex-2026.9.7.tar.gz |
|---|---|
| Size | 687.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3e77bdad199da50c62281107dd8f996d3a57fd7e6c6ade0946055a5183825e3a
|
|
BLAKE2b-256 checksum How to use checksums |
9d1da5000f6f44024803192e7a141ecced8d88ca2b91d567a22e26bf817e6666
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-win_amd64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.1 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
b1c134546f40c600d7c83f0af259f35ce7b11af824f0fec302b0b71d6a969733
|
|
BLAKE2b-256 checksum How to use checksums |
639c23a1747117d53a501ba4a1ebc41e1b4e0b9539e5fd360f531ecd47620fb7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-win32.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-win32.whl |
|---|---|
| Size | 1.0 MB |
| Tags | CPython 3.11 Windows x86-32 abi3 |
|
SHA-256 checksum How to use checksums |
719fd5af198f97f8b1f1210468600d7a7eea145cb4c876ac1a97145624f1179b
|
|
BLAKE2b-256 checksum How to use checksums |
d9e6c172887d712ebcff229e90342b72a42da4f838c603d8fa04878a3ea5cfec
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-musllinux_1_2_x86_64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 4.4 MB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
f47d999451deac0251957513bc0dfb4d8316e038842e2ad90e5298e171874e86
|
|
BLAKE2b-256 checksum How to use checksums |
ab9de97e82e1b0ce19914912101dc03fb02d2f822c5f63deafef97bab1e9221a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-musllinux_1_2_aarch64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-musllinux_1_2_aarch64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.11 Linux musl 1.2+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
37f4447b83929f9b1e7fe2d956f48b561de81948c0b3fcb2df93b1e9418b5488
|
|
BLAKE2b-256 checksum How to use checksums |
1eb130cde17fb9cd7e36b9bd6c01f93ca7de98b68f72a849db4a4ffd382fdbbc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ x86-64 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
5dbbe55d997787a4a562bc7a0e51239ce26843c4fa36246fd2e99f9eb3053f01
|
|
BLAKE2b-256 checksum How to use checksums |
4dd888c70d9dcddbe039d2cf27ea1b98bcfe7050cd26c6c4e6b096cff65c8260
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 3.3 MB |
| Tags | CPython 3.11 Linux glibc 2.24+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
159bbf1a3b6e6b816012912a919572ca855786ab94787f616d68ce3f88fee198
|
|
BLAKE2b-256 checksum How to use checksums |
04d08ef6a45a22ad5fca830419bc7076dc91c110864ee5784ba80b19b489cfe3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 897.3 kB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
7b0e806060fcbff74a4b15accf6a63e1a1b4bd9b7871f307cd7c4fa50c27f9ff
|
|
BLAKE2b-256 checksum How to use checksums |
8a4be05d46d290afa41b6156a9b82afd31ea32b47368ed807918f7282a0af7c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency logRelease files / real_regex-2026.9.7-cp311-abi3-macosx_10_9_x86_64.whl
| Download URL | real_regex-2026.9.7-cp311-abi3-macosx_10_9_x86_64.whl |
|---|---|
| Size | 914.5 kB |
| Tags | CPython 3.11 abi3 macOS 10.9+ x86-64 |
|
SHA-256 checksum How to use checksums |
357072ee166b7425f5c536f74c34a1d20d1f8d734184c0d5a1d95823199b4008
|
|
BLAKE2b-256 checksum How to use checksums |
50277ff2814b9211914333bf2894a6c4008c8b37531ddecee9ee0e8465acec76
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.
Transparency log