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.1.tar.gz (666.3 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.1-cp311-abi3-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11+Windows x86-64

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

Uploaded CPython 3.11+Windows x86

real_regex-2026.9.1-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.1-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.1-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.1-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.1-cp311-abi3-macosx_11_0_arm64.whl (876.1 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

real_regex-2026.9.1-cp311-abi3-macosx_10_9_x86_64.whl (893.8 kB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.9.1.tar.gz
  • Upload date:
  • Size: 666.3 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.1.tar.gz
Algorithm Hash digest
SHA256 3b0525aa88545ebe4a54e012dda0482c8edd72d620e98b9955e84c5d8c17d298
MD5 63fee95f4eb70e17370f78180a49f548
BLAKE2b-256 a9be75d7415378dd6f7d1ab65250b0e08a47bc7e8a1bb350e276033ca1b77e26

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 15d9b6b6c6185ca292b97a400392702d778fcec84fe3a9e7572860bd88bc12b2
MD5 7cc3ce8ba005fa3ca365b6650fa92735
BLAKE2b-256 3851d196b1b24f159ae1de885bef335f26c54fb15cdc45eab7c4ab9f7cb43567

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: real_regex-2026.9.1-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.1-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 b99e31394298243cda3b687540fcfe10834fda19ffe88d9104d769a6ae12bec5
MD5 c60aa20b15aa994775e46e609b73dd7d
BLAKE2b-256 a274348e63d5804200551f1400e91363913259b03a160fe28ac995ed59c1262c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 88acb7f2e9154c02f16a042ca3637a01b28657c1595ada7ad006532a28b769cc
MD5 97d532a4a62f974275f0d1f472a99ab6
BLAKE2b-256 91691a3dc5c108149ca8b46f8748f72aff5a6199247516660ac30e5db550deb7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 12ab11cef6a09c8065cbbde4ddd4ed946bf66260f1db6bb135f6f9a41f077eb1
MD5 38b113cdcc1566511a2bf807efedd009
BLAKE2b-256 b3c94c35cd72e750c4e42053380a63f1c6b559e0493aa9fd3757721afc438a90

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1513b9c428491450da65ab8b87b98a2855c1383577600c8576a264b77570c9ee
MD5 c6cc7de3710040433822b5ca7271835e
BLAKE2b-256 e12adb08d9dde3afa96e3d155b6f9b6c66b49e63a59bca5c9b1af518550f64eb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e597e7b39667401d256904603132b276e6e819fdfe51046f7e5b5ee5a9906c62
MD5 4279be18dd7fb67dafe86b36c3129afd
BLAKE2b-256 06e8b47dc41909a077915220f079374fb07fdc18d3a2bd585b0036320dfb09f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 695a400f9ba8b03894b23ad8172330f8421497657871fa511dfa9b55af6d9bcd
MD5 d4a6d33cd66c2d21b841c4f6c6b6a6b2
BLAKE2b-256 f7fd6b1f227de06a367e6ef5703243f83bad6023798dd521719a1a8a40cec239

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.1-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 97119a7afceab8c692375a001ce4dc2bcfe34e578fde05490806ecc192ef148b
MD5 07c915ed6dedacdab7a8d3decf94e0e4
BLAKE2b-256 65351ba6e8da5e20a174b887a92c5c9de566677420bd6782d711f3b94d7a5905

See more details on using hashes here.

Provenance

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

This release

2026.9.1 This release

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