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: COMPATIBILITY.md.

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.8.19.tar.gz (629.4 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.8.19-cp310-abi3-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.10+Windows x86-64

real_regex-2026.8.19-cp310-abi3-win32.whl (1.0 MB view details)

Uploaded CPython 3.10+Windows x86

real_regex-2026.8.19-cp310-abi3-musllinux_1_2_x86_64.whl (4.2 MB view details)

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

real_regex-2026.8.19-cp310-abi3-musllinux_1_2_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.10+musllinux: musl 1.2+ ARM64

real_regex-2026.8.19-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (3.1 MB view details)

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

real_regex-2026.8.19-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (3.1 MB view details)

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

real_regex-2026.8.19-cp310-abi3-macosx_11_0_arm64.whl (860.8 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

real_regex-2026.8.19-cp310-abi3-macosx_10_9_x86_64.whl (877.9 kB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.8.19.tar.gz
  • Upload date:
  • Size: 629.4 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.8.19.tar.gz
Algorithm Hash digest
SHA256 54c635fe40a1a835b6e740756e2b9096858cb17c6dcf10d0f3c282dd2ac9d9d2
MD5 82a9a23c9ea7c8c7c0082e43035481a5
BLAKE2b-256 c328e21f8431d9fb47d33f70d60209836efeecc3dfbb748f76f7b7436fe055f5

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19.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.8.19-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cbc0d6c5aa9d0318052db6c9d2f4fa21e94fd046e7d31f8a827e45a8cb7bc036
MD5 55dd87aa5997f5bd761c5ad80694a26a
BLAKE2b-256 c464b619bb50aa17d4c1fd0fec2932689db332350842563417d547c710cc999d

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-win32.whl.

File metadata

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

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 d86f06c327adf47103044f8a260acaaa758cb7c5a87285c140bda41cecefb2c5
MD5 8d6fa3ff04f13dcdf168274d32bae19a
BLAKE2b-256 3a773934f58cf315307d6ea5ce510e0ba63059f6bdc4f95def746b1808756813

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f1f9935fe22ee12ea8be549371034ea843860017f9cecffd6fd72bd6858f7a5
MD5 9164284374c24f6046289a8a4e819fed
BLAKE2b-256 ab3ff3fd9005cc12a5a331ffd16d34a0351613c3e3382ea7df7d5a334bf0044c

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5fc4d2e61fd30979945b6ebd03c5c98c3fb7831ca109b7870aefa099e695b945
MD5 be262bfc1c3a3be5aece6c435a78c1e7
BLAKE2b-256 6fd95c84a509cd320a9b365aefa2495045fdd27c3d6b4dd1b992b37b82692f8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a4e29e1e0b383197aca9f46ab44db55bb5fb90c6c97870bf37cb1a73be7c2f08
MD5 40259a5263ac0b57854ea74b5fb48ae5
BLAKE2b-256 878cf01999cd4ea586f65edc2dbec8d733081c1f64aabe9552bf4d5ce7bd6939

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7a3124b2362feb87c05e9bff358f4c615c346919858eaa62dcc45f91658e54c5
MD5 47d61d48a0baabb56507d05b23ea5745
BLAKE2b-256 a0495697f9a79da2d6add659a5338a6fb1a41cb7a2141ba6a1f5d92663bc79ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 15aea38ae793caf4a73a3c849e7c9da892eb2fe8665dfe38af4bafa8aa5fc455
MD5 5d431376aac89b6892bd498769da1e9f
BLAKE2b-256 cec8e13d422dec9c98707e7879498e181a13869606e8216a1e1f42a151a7cf8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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.8.19-cp310-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.19-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d1099d4951cef071abd246476ee1cf7775931dbd99d77c2d9f1145c08b3472e7
MD5 795d61d00a2b386974c5a5327feb524e
BLAKE2b-256 fabab543fedfe84defb7863939d9c30c5b60a37b62c33d116270bf7a3a3e6bee

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.19-cp310-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

2026.9.3

9 files

2026.9.2

9 files

2026.9.1

9 files

2026.9.0

9 files

2026.8.20

9 files

This release

2026.8.19 This release

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