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

Uploaded CPython 3.10+Windows x86-64

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

Uploaded CPython 3.10+Windows x86

real_regex-2026.8.18-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.18-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.18-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.18-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.18-cp310-abi3-macosx_11_0_arm64.whl (860.0 kB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

real_regex-2026.8.18-cp310-abi3-macosx_10_9_x86_64.whl (877.3 kB view details)

Uploaded CPython 3.10+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.8.18.tar.gz
  • Upload date:
  • Size: 626.7 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.18.tar.gz
Algorithm Hash digest
SHA256 11aca2415278f32b9d3556e3cc3121c40da815e9e079e8d4e4382cac6bddf835
MD5 95d7543f0830d3f76db18effb63edb17
BLAKE2b-256 513306faf9f8ad2176ba9bd946be81a7e2ad5aec6b22e74d4014c1ee1bd7acf9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 5bea58c67ea9355a1d5033b660b98d1633f8359fefc9c3f2f4bfc9fe876d9c7c
MD5 cc80674a51a9ea58a2f27df1577ab840
BLAKE2b-256 fe6537aae11b81bad1e9f86fe9ed45818327d7548766f6eae89da5fe42daa043

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: real_regex-2026.8.18-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.18-cp310-abi3-win32.whl
Algorithm Hash digest
SHA256 06c41d9d5a93090e0eec61344c35105fec2949d614c6d53119a3daf65b0720e0
MD5 1a10019547da8ca4f8d9841d64b9d8af
BLAKE2b-256 10ce3a4447a0b4db790919779a236905ffabf716d0119e6c356b3d40daf3342a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 370cf6d44a32cc7fa67aa44b9cccb1fab1b107b8bc230a93f2b040135a634686
MD5 59697ce9b4959676dc60218c3880df95
BLAKE2b-256 bf976603e7e820b7c54b2cf6a974f5373f7db6a26a4dfe83041efb5db0f733c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 d05bc5bfa6501f351ed5b0ed796ab74c1463fbedc35ccc90612d1b68e3817a90
MD5 07d49f79129c721f0fe49ff442ab1d20
BLAKE2b-256 0387be52cb758055f20069dbecf97ee991cdf80059379e058dd972a14c6d58fd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98570d80f20c42afa6ba0ccf02e1f881076f36b2fc8adc052d3aeee65e875155
MD5 4bbb5ec44cca39121185710298d207af
BLAKE2b-256 511966e6d8ade3a18745dc7efd2d346ab613863a5ca4f2f962054fe4b2132e9f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 62f40fd949ba37b82c243404b0a1eb814305e4dd7a6cbe86d4858b5f60a99bfb
MD5 fd49acd5322822803e12f30acf8b2143
BLAKE2b-256 5cd04e5bf76b4322f964a132b5f119eb5b424e09aac8f0c3bf2dac7330e5aa83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a0abd55d322610efbaa3fea6eee5a260f6de943dc95854913b58af7cdd81b77
MD5 a5b926a0e3bde5f3ca7960b4f5989e6b
BLAKE2b-256 a57e76b60e17c27c7d04a1ccaefe7f637aa5736bd984ba3f13bec21c186ebfb0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.8.18-cp310-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 4db768fc287c74535d9e4d50a72ed1e26f09ef801e937bff1001ca36ade88fb3
MD5 f27ae5f0260859de26c209b0e1fba754
BLAKE2b-256 49c98159f71b82c48fafa52d0dcce3237528ec88e6eb0214fe3c2a418bcc8e29

See more details on using hashes here.

Provenance

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

2026.8.19

9 files

This release

2026.8.18 This release

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