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

Uploaded CPython 3.11+Windows x86-64

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

Uploaded CPython 3.11+Windows x86

real_regex-2026.9.2-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.2-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.2-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.2-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.2-cp311-abi3-macosx_11_0_arm64.whl (880.2 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

real_regex-2026.9.2-cp311-abi3-macosx_10_9_x86_64.whl (898.0 kB view details)

Uploaded CPython 3.11+macOS 10.9+ x86-64

File details

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

File metadata

  • Download URL: real_regex-2026.9.2.tar.gz
  • Upload date:
  • Size: 671.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.9.2.tar.gz
Algorithm Hash digest
SHA256 7eb219cac36625230ed94c44e6fa89635f5ff1aa8b766f1c855bab3550ca512f
MD5 939a16911c4ee4dc0012838bde03445e
BLAKE2b-256 05c0ca68a87ab6c0dc8a47715ac9a2ad0852cb45ebcc58b8f3664bd21994a839

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 1620d28f4487cef6082fb9bcd4af7eafe12f87847136e637f3832a00f9f36d17
MD5 8bb7191c0bce6fc28cb6ee264c4e4788
BLAKE2b-256 f5a91f823ad84fe7730820ac632724e00ddbad9da7a89f330b049f4a8eddd1d1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: real_regex-2026.9.2-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.2-cp311-abi3-win32.whl
Algorithm Hash digest
SHA256 201136dbe7b6a0ba6c610d064e089148b69ea73a0b19beca55a68a462196b39b
MD5 fbed0f2553886f1b961589c306d45e14
BLAKE2b-256 4fe6425fad62c9dc4e0b610d4c99c439fb138734acf2351765a7e611415c0864

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 100767db49570cc5b6adf4521e43ef0959cf3b98145f346b44fc1e2b9749157f
MD5 b63ab32dabd81c4a7a010e926b3c20ee
BLAKE2b-256 24e594e8ebd1f0022f87d877ca5f6983a2d0ee7f4a0323f6197440f0017e0167

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f630124b06b3e8969d4c597d377fb3cfa72b2929ef978076d9d7df15878a58d8
MD5 71d0674da00f2753be4fadc15e6dcd5d
BLAKE2b-256 8a51d583305f3eb125ae6bc91962f3e9be56db42e1aecbe7dbdbd7d54a96b6a0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d0ae3b76d42402a7008472c8f12787fe5cb7ef6ac4d94cfb8d0697f164673648
MD5 aaafa6c62010434ba63af9e3dedcfd70
BLAKE2b-256 23aadb3211abcda840972c714ed9192dcef5ec9cd231e15b939fe58096b026e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-manylinux_2_24_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f3e5a99fc3ff21f1b39dff9528a762a53b01c66a6d01e86ec7d21b20d6b6a051
MD5 6b7a618d3a6af0c07a659d771ea72b59
BLAKE2b-256 5599e5e5b11659f13020712521511f1057c9efcb29c753eba391239eaa83e0b1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 185b7ecaac9a63c7c59276da56eebbeac64c46a9b544d431b44c0a6cd5ca8c00
MD5 b08330c90693ef1f5effef9d75d78430
BLAKE2b-256 ddd6b5036a64048f09ec3149e1e40a99f69c4695cd1ae53ba4ab58dd875bd497

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for real_regex-2026.9.2-cp311-abi3-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 6bf5922bfd99e88f36e9a8030f642b0bf240b5464fbc36b47f4d23d1e2708dfd
MD5 36156fc0151d5650fae97824a8361e09
BLAKE2b-256 978aba5d863e1b4911ac1ea84b812bdf39048c20b45220a3f3ae2eea5b33d2b9

See more details on using hashes here.

Provenance

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

This release

2026.9.2 This release

9 files

2026.9.1

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