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

Uploaded CPython 3.11+Windows x86-64

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

Uploaded CPython 3.11+Windows x86

real_regex-2026.9.0-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.0-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.0-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.0-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.9.0-cp311-abi3-macosx_11_0_arm64.whl (867.6 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

real_regex-2026.9.0-cp311-abi3-macosx_10_9_x86_64.whl (884.6 kB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.9.0.tar.gz
  • Upload date:
  • Size: 646.8 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.0.tar.gz
Algorithm Hash digest
SHA256 fda3da24d830759ff7f8f68df641d5e7f0e033110431f91809e4ce781d592d3c
MD5 15129037f601ac9695146710e9fffca6
BLAKE2b-256 3036af82089ad602d4bcf240578317b7f418970041713ff084a3dde304887c7d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2e0dd98772e9d3a341f34bef2c82de6ff3de705a9ba8301c4b648aa8ab65cac5
MD5 7cf4980cb9cb111b4b888e9db11536ea
BLAKE2b-256 30fa5d19dc7d00e75a97adba94193321742a626086c9a3dec2a110105a5f1425

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: real_regex-2026.9.0-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.0-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 bdf228c0a5c91d938161935ff14b1f14c59a4ea980fb7be78296e38f636381a5
MD5 fe06a1fed590cf4bfbcc024a1df0617c
BLAKE2b-256 eeb089baf53973cf0779daf6ff7c82444b83e76bd81e2458962d5caa53a88317

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 2766bbfc45a185f09acb26a1786199342f2b3aea67ac125253379fec43a2396e
MD5 07946988d8d882e0e9e31e3630ae90ca
BLAKE2b-256 88d524272f7e5e07ccfad8ac1ce03a18a4dd489a4cb02cf3f29efaf67cbadfab

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7618df7c89f9473fd59d1dd61be9ddd1be11f6bcb5a153461c6fd4710dda65be
MD5 30ba62d7326954b608915d2c14c6c2bc
BLAKE2b-256 40d8b00cbed454e02b536504f2252feacb4541590d0032134fd8e2e778f6026f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb3b8bf65a3131f3d83d7883518a03b4740792356bf271fea4e61e2920965652
MD5 eb7a977fe9dca7cb294bf46cedaa4e80
BLAKE2b-256 0eabae352acd1f03092d6887a287d655bb52cdd8f87954847740baebe63f0c98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9894794b785dd0291c5c4a7949997c14c8a7fb3facec9e9d96b923764d4bbee9
MD5 27f4090eedd9be0ddadf88e737c08336
BLAKE2b-256 07a3e16913c5394bda83a9112117beeadbc41b2eb79c1a1047880164becd282c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 02d15aa32294c05c9b0c8aeacae670558e2362d65f4c6f1f1043c9431b7ae2c3
MD5 38976b297c43ee086056d7b10a9f92ed
BLAKE2b-256 026e1e8daa34fa56045ae98c342126e8ee30a3d2841bc39a17a0950a796887eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.0-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 31451bf0a9b388b52f24cbad7e76a5c1cdc21e97a7c05190a4e38344b2818cd9
MD5 0f61fd03dd4aa42b714f958fadbe74f4
BLAKE2b-256 5ffa05a10a756c9188a7b113046ca041178f03a48db69a3d16dcd8d598dc8233

See more details on using hashes here.

Provenance

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

This release

2026.9.0 This release

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