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.8.20.tar.gz (643.6 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.20-cp311-abi3-win_amd64.whl (1.0 MB view details)

Uploaded CPython 3.11+Windows x86-64

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

Uploaded CPython 3.11+Windows x86

real_regex-2026.8.20-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.8.20-cp311-abi3-musllinux_1_2_aarch64.whl (4.1 MB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

real_regex-2026.8.20-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.8.20-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl (3.1 MB view details)

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

real_regex-2026.8.20-cp311-abi3-macosx_11_0_arm64.whl (866.0 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

real_regex-2026.8.20-cp311-abi3-macosx_10_9_x86_64.whl (883.1 kB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.8.20.tar.gz
  • Upload date:
  • Size: 643.6 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.20.tar.gz
Algorithm Hash digest
SHA256 ca97b52bc951038bafd36441dd3d05937bf59b49670158b174d9b03cbd44e59d
MD5 465b623ba283110d414d2bc6c005bdc9
BLAKE2b-256 2475965f14086fece4a66f072a0f0f91c5d5151f88e07263887e3cdaa91d4598

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20.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.20-cp311-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 21f8994640947002e855ee8db54f6113b494b510c9e44da9466063fcf8829278
MD5 be24851114ed97b0113c80f6eb8e4748
BLAKE2b-256 3c3818d090ad21e0b69da2f7645a6c37afac25a55465901b976b642b76c7f18f

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-win32.whl.

File metadata

  • Download URL: real_regex-2026.8.20-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.8.20-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 9f3869957fd72aace303219535bf3c75fbaa7ed7011b77ded4673ba8349c1861
MD5 df591997c77e1a1e34960f3a6b74c6c6
BLAKE2b-256 82b85807c1e8e05e20b466a8896eb72a53043bf67ff11e54449adea23af5b2ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 afc2c4e27c130b072c94d45d4965628edd253850c1540500e17a09a50bec871d
MD5 f4fda872b4ddcaa2e5e200b459e1604c
BLAKE2b-256 ca8c2ba6c8ae6aa12d7fad710ed9b6ef1bab66c2d2188343a4b30cd75a656d06

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 24ebb7a72753363e2c74098451757fb6c01e948e9374dcb6ea0416b52b102557
MD5 52c19d19161f05889033338352ec3c23
BLAKE2b-256 17f703c25cd4f94336a304116beb1e1e33dcbd3ef1ab5694210267803ea9d679

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e9cf006c2bd12da38ead207759385325f7ac8d53fa7e4d9c27ba63da29495ca1
MD5 d8912f32a7c3412e417e8b37605cc018
BLAKE2b-256 a4cf17eb8baa71b6e00dfdc31a45d204fd8918220b84265df8cea1f8afb1b833

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 adb684b64b3044a4abd1e1ba034d6954d323308af05244c66b6519a9b3e1b0bf
MD5 3dd4acc99d0b5fa9e14a0b4e0dd672e4
BLAKE2b-256 03b9f2ab3020c31f1fc0f52573ecb6135c97b3a2bf76b02ffe6ca582a7a2a4a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e3cb7d836bd32e3bb618adbfed6c4af3d8033d22044d2e6535c055b6d4e414ab
MD5 3fcd3cabbfc9c758ce045f1b74c350f8
BLAKE2b-256 b19b20a002200b1195d1c5ac18a77915b538d2441593885c351feda1448c6f5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for real_regex-2026.8.20-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.8.20-cp311-abi3-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for real_regex-2026.8.20-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 7306077dae0861e9914edc16aa96aab3df57d4d911407bd5e076134e7b8d5287
MD5 93a3ab7d023c0003de5811216b029568
BLAKE2b-256 b9a3f129ae1d48105baeca4fd0a55fbbaa6c9982e094edacf636115a0de9255b

See more details on using hashes here.

Provenance

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

2026.9.3

9 files

2026.9.2

9 files

2026.9.1

9 files

2026.9.0

9 files

This release

2026.8.20 This release

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