Skip to main content

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+)+b against 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 re on most work — the measured multiples (geometric mean, per-case wins and the two accepted losses) live in docs/BENCHMARKS.md §B. Sparse scans, multiline anchors and capture-dense extraction lead; a couple of high-volume split/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.

Download files

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

Source Distribution

real_regex-2026.9.3.tar.gz (677.2 kB view details)

Uploaded Source

Built Distributions

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

real_regex-2026.9.3-cp311-abi3-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11+Windows x86-64

real_regex-2026.9.3-cp311-abi3-win32.whl (1.0 MB view details)

Uploaded CPython 3.11+Windows x86

real_regex-2026.9.3-cp311-abi3-musllinux_1_2_x86_64.whl (4.2 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

real_regex-2026.9.3-cp311-abi3-musllinux_1_2_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

real_regex-2026.9.3-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

real_regex-2026.9.3-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (3.2 MB view details)

Uploaded CPython 3.11+manylinux: glibc 2.24+ ARM64manylinux: glibc 2.28+ ARM64

real_regex-2026.9.3-cp311-abi3-macosx_11_0_arm64.whl (885.0 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

real_regex-2026.9.3-cp311-abi3-macosx_10_9_x86_64.whl (902.0 kB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

File details

Details for the file real_regex-2026.9.3.tar.gz.

File metadata

  • Download URL: real_regex-2026.9.3.tar.gz
  • Upload date:
  • Size: 677.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for real_regex-2026.9.3.tar.gz
Algorithm Hash digest
SHA256 e3adadc29353b405590c6f1f214d6ed26bde7cb68f080b1c677c516c7ea8fdf8
MD5 7df78dc97f26c2476a68e59f8bc9d35b
BLAKE2b-256 8e9b54f7ce4e7542b2fe2c9dd9df634a6dc0640811762edda9a4512450d64f4b

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3.tar.gz:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 bd9758e43acf0f8877530f289243c5f3e12d2eac2c9a36a2c817060049848f79
MD5 b0ad805b9f6d5ee50e5103d8bea514b0
BLAKE2b-256 077c98bea3e592e7906cbf3f85c4c9a8e372676c841dda59423a3bddf7689b11

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-win_amd64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-win32.whl.

File metadata

  • Download URL: real_regex-2026.9.3-cp311-abi3-win32.whl
  • Upload date:
  • Size: 1.0 MB
  • Tags: CPython 3.11+, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 06104fce10df91953cba19f73fdc7ebf039e26f9caa9ed06dee76637bc6df7d5
MD5 e36d43f41ee9a60eefa73d042f427a15
BLAKE2b-256 7f0c0bb1fdee4ffc8951bdda1ffd85936b6b50a71ef1ece9a6cc5f88d0746d4f

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-win32.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35bbedeb259d6e286dea3534a1734dd2e80133d3b0e1aae9137366ec81cc4a9b
MD5 3b636090c4ca4cfb2267bd5ea3614a76
BLAKE2b-256 792e290d645e05ccbccfbe137585cb908fdf6076b779f67299e18ddf7a3ea7e0

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-musllinux_1_2_x86_64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 88c040badb4a2315af94c9fb36970b54ea7d5945747b40d000fc959075126c49
MD5 9e47bdee309633579d5dfa928b309fb8
BLAKE2b-256 056a76657d25d10ad6b548e7842ac07f7f079a79345c89ea46a407700aed46a5

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-musllinux_1_2_aarch64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6c9777c2ea70bba31ae3cdf17a5a531c450290e607c0c0677b1f0f21adf87d96
MD5 7eb0656a57c889482e1883f6d905957e
BLAKE2b-256 0ca46c5d3380392fa8002807df01f4883cb486699d321a32b4e0baccb983e13a

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f3e33098f5e8b3948e558904903fdd83b54b5380187b54bf88b826150a42eb4c
MD5 da51394cb2e3be02fd264fa62331cb11
BLAKE2b-256 8efd7b1fa722b4053436e05f8652ca71f750dd5a81eadc1dad9caa7efb46f40f

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fc205fd86c39aaddbba163570a65c500b28938d51df34efe8ed68c9578e22379
MD5 d0c7b074f2d9ccec361396448abb72bb
BLAKE2b-256 4dbf5eec30d2fd440b67ca04effd4babcf55e5bfafdbffdd580f5815df9f12fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-macosx_11_0_arm64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file real_regex-2026.9.3-cp311-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.9.3-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 51ddfe1d0ece0a0c325f209de2612d6c684ce8166f3d445ffa5b428c18b87f6f
MD5 e58bea57834d2e65d5bc992cbe82454e
BLAKE2b-256 43d7317168c3912b020e035eff1b08a086da4453c743df42282efa640caf115a

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.9.3-cp311-abi3-macosx_10_9_x86_64.whl:

Publisher: release.yml on RECHE23/real-regex

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

2026.9.3 This release

9 files

2026.9.2

9 files

2026.9.1

9 files

2026.9.0

9 files

2026.8.20

9 files

2026.8.19

9 files

2026.8.18

9 files

2026.8.17

9 files

2026.8.16

9 files

2026.8.15

9 files

2026.8.14

9 files

2026.8.13

9 files

2026.8.12

9 files

2026.8.11

9 files

2026.8.10

9 files

2026.8.9

9 files

2026.8.8

9 files

2026.8.7

9 files

2026.8.6

9 files

2026.8.5

9 files

2026.8.4

9 files

2026.8.3

9 files

2026.8.2

9 files

2026.8.1

9 files

2026.8.0

9 files

2026.7.63

9 files

2026.7.62

9 files

2026.7.61

9 files

2026.7.60

9 files

2026.7.59

9 files

2026.7.58

9 files

2026.7.57

9 files

2026.7.56

9 files

2026.7.55

9 files

2026.7.54

9 files

2026.7.53

9 files

2026.7.52

9 files

2026.7.51

9 files

2026.7.50

9 files

2026.7.49

9 files

2026.7.48

9 files

2026.7.47

9 files

2026.7.46

9 files

2026.7.45

9 files

2026.7.44

9 files

2026.7.43

9 files

2026.7.42

9 files

2026.7.41

9 files

2026.7.40

9 files

2026.7.39

9 files

2026.7.38

9 files

2026.7.37

9 files

2026.7.36

9 files

2026.7.35

9 files

2026.7.34

9 files

2026.7.33

9 files

2026.7.32

9 files

2026.7.31

9 files

2026.7.30

9 files

2026.7.29

9 files

2026.7.28

9 files

2026.7.27

9 files

2026.7.26

9 files

2026.7.25

9 files

2026.7.24

9 files

2026.7.23

9 files

2026.7.22

9 files

2026.7.21

9 files

2026.7.20

9 files

2026.7.19

9 files

2026.7.18

9 files

2026.7.17

9 files

2026.7.16

9 files

2026.7.15

9 files

2026.7.14

9 files

2026.7.13

9 files

2026.7.12

9 files

2026.7.11

9 files

2026.7.10

9 files

2026.7.9

9 files

2026.7.8

9 files

2026.7.7

9 files

2026.7.6

9 files

2026.7.5

9 files

2026.7.4

9 files

2026.7.3

9 files

2026.7.2

9 files

2026.7.1

9 files

2026.7.0

9 files

2026.6.21

9 files

2026.6.20

9 files

2026.6.19

9 files

2026.6.18

9 files

2026.6.17

9 files

2026.6.16

9 files

2026.6.15

9 files

2026.6.14

9 files

2026.6.13

9 files

2026.6.12

9 files

2026.6.11

9 files

2026.6.10

9 files

2026.6.9

9 files

2026.6.8

9 files

2026.6.7

9 files

2026.6.6

9 files

2026.6.5

9 files

2026.6.4

9 files

2026.6.3

9 files

2026.6.2

9 files

2026.6.1

9 files

2026.6.0

9 files

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