NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #33 most downloaded on crates.io
An implementation of regular expressions for Rust. This implementation uses finite automata and guarantees linear time matching on all inputs.
Last release 2 months ago
15 Jul 2026
Release timing varies
gaps range from 2 weeks to 10 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
4 versions withdrawn
withdrawn after publishing
12 years old
169 releases · first in 2014
This release updates regex's minimum supported Rust version to 1.28, which was release almost 1 year ago. This release also updates regex's Unicode da
This release updates regex's minimum supported Rust version to 1.28, which was release almost 1 year ago. This release also updates regex's Unicode data tables to 12.1.0.
This release contains a bug fix that caused regex's tests to fail, due to a dependency on an unreleased behavior in regex-syntax.
This release contains a bug fix that caused regex's tests to fail, due to a dependency on an unreleased behavior in regex-syntax.
One column per quarter.
This release contains a few small internal refactorings. One of which fixes an instance of undefined behavior in a part of the SIMD code.
This release contains a few small internal refactorings. One of which fixes an instance of undefined behavior in a part of the SIMD code.
Bug fixes:
This release fixes up a few warnings as a result of recent deprecations.
This release fixes up a few warnings as a result of recent deprecations.
This release fixes a regression introduced by a bug fix (for BUG #557) which could cause the regex engine to enter an infinite loop. This bug was orig
This release fixes a regression introduced by a bug fix (for BUG #557) which could cause the regex engine to enter an infinite loop. This bug was originally reported against ripgrep.
This release fixes a bug in regex's dependency specification where it requires a newer version of regex-syntax, but this wasn't communicated correctly
This release fixes a bug in regex's dependency specification where it requires
a newer version of regex-syntax, but this wasn't communicated correctly in the
Cargo.toml. This would have been caught by a minimal version check, but this
check was disabled because the rand crate itself advertises incorrect
dependency specifications.
Bug fixes:
This release fixes a backwards compatibility regression where Regex was no longer UnwindSafe. This was caused by the upgrade to aho-corasick 0.7, whos
This release fixes a backwards compatibility regression where Regex was no longer UnwindSafe. This was caused by the upgrade to aho-corasick 0.7, whose AhoCorasick type was itself not UnwindSafe. This has been fixed in aho-corasick 0.7.4, which we now require.
Bug fixes:
This releases fixes a few bugs and adds a performance improvement when a regex is a simple alternation of literals.
This releases fixes a few bugs and adds a performance improvement when a regex is a simple alternation of literals.
Performance improvements:
aho-corasick to 0.7 and uses it for foo|bar|...|quux regexes.Bug fixes:
This release fixes a bug found in the fix introduced in 1.1.1.
This release fixes a bug found in the fix introduced in 1.1.1.
Bug fixes:
This is a small release with one fix for a bug caused by literal optimizations.
This is a small release with one fix for a bug caused by literal optimizations.
Bug fixes:
This is a small release with a couple small enhancements. This release also increases the minimal supported Rust version (MSRV) to 1.24.1 (from 1.20.0
This is a small release with a couple small enhancements. This release also increases the minimal supported Rust version (MSRV) to 1.24.1 (from 1.20.0). In accordance with this crate's MSRV policy, this release bumps the minor version number.
Performance improvements:
New features:
Bug fixes:
OPT #513: Improve performance of compiling large Unicode classes by 8-10%.
This is a small release with an API enhancement.
This is a small release with an API enhancement.
New features:
Replacer trait.This is a small release that bumps the quickcheck dependency.
This is a small release that bumps the quickcheck dependency.
This is a small bug fix release.
This is a small bug fix release.
Bug fixes:
This release exposes some new lower level APIs on Regex that permit amortizing allocation and controlling the location at which a search is performed
This release exposes some new lower level APIs on Regex that permit
amortizing allocation and controlling the location at which a search is
performed in a more granular way. Most users of the regex crate will not
need or want to use these APIs.
New features:
Bug fixes:
RegexBuilder::dot_matches_new_line.Parser::allow_invalid_utf8 in the
regex-syntax crate.This release upgrades regex's Unicode tables to Unicode 11, and enables SIMD optimizations automatically on Rust stable (1.27 or newer).
This release upgrades regex's Unicode tables to Unicode 11, and enables SIMD optimizations automatically on Rust stable (1.27 or newer).
New features:
size_hint on RegexSet match iterators.Bug fixes:
use_std feature isn't used.While this release includes some breaking changes, most users of older versions of the regex library should be able to migrate to 1.0 by simply bumpin…
This release marks the 1.0 release of regex.
While this release includes some breaking changes, most users of older versions of the regex library should be able to migrate to 1.0 by simply bumping the version number. The important changes are as follows:
RegexBuilder.(?-u:\B) is no longer allowed in Unicode regexes since it can match at
invalid UTF-8 code unit boundaries. (?-u:\b) is still allowed in Unicode
regexes.From<regex_syntax::Error> impl has been removed. This formally removes
the public dependency on regex-syntax.use_std, has been added and enabled by default. Disabling
the feature will result in a compilation error. In the future, this may
permit us to support no_std environments (w/ alloc) in a backwards
compatible way.For more information and discussion, please see 1.0 release tracking issue.
This release primarily contains bug fixes. Some of them resolve bugs where the parser could panic.
This release primarily contains bug fixes. Some of them resolve bugs where the parser could panic.
New features:
Bug fixes:
[\d-a].\n character.(?flags).\pC was not recognized as an alias for \p{Other}.This release primarily updates the regex crate to changes made in std::arch on nightly Rust.
This release primarily updates the regex crate to changes made in std::arch
on nightly Rust.
New features:
Hir type in regex-syntax now has a printer.This release introduces a new nightly only feature, unstable, which enables SIMD optimizations for certain types of regexes. No additional compile tim
This release introduces a new nightly only feature, unstable, which enables
SIMD optimizations for certain types of regexes. No additional compile time
options are necessary, and the regex crate will automatically choose the
best CPU features at run time. As a result, the simd (nightly only) crate
dependency has been dropped.
New features:
Bug fixes:
(?x)[ / - ] failed to parse.BUG #454: Fix a bug in the nest limit checker being too aggressive.
Bug fixes:
This release includes a ground-up rewrite of the regex-syntax crate, which has been in development for over a year. 731 New features:
This release includes a ground-up rewrite of the regex-syntax crate, which has been in development for over a year. 731 New features:
&&, -- and ~~ binary
operators within classes.\p{..} character classes.
Things like \p{scx:Hira}, \p{age:3.2} or \p{Changes_When_Casefolded}
now work. All property name and value aliases are supported, and properties
are selected via loose matching. e.g., \p{Greek} is the same as
\p{G r E e K}.UNICODE.md document has been added to this repository that
exhaustively documents support for UTS#18.()+ is
now a valid regex.Ast type in regex-syntax now contains span information.\u, \u{...}, \U and \U{...} syntax for specifying code points
in a regular expression.Replace::by_ref adapter for use of a replacer without consuming it.Bug fixes:
BUG #446: Fixes a bug in the new Boyer-Moore searcher that results in a match failure. We fix this bug by temporarily disabling Boyer-Moore.
Bug fixes:
BUG #437: Fixes a bug in the new Boyer-Moore searcher that results in a panic.
Bug fixes:
FEATURE #348: Improve performance for capture searches on anchored regex. (Contributed by @ethanpailes. Nice work!)
New features:
Bug fixes:
FEATURE #374: Add impl From for &str.
New features:
impl From<Match> for &str.Clone and PartialEq on Error.Bug fixes:
FEATURE #341: Support nested character classes and intersection operation. For example, [\p{Greek}&&\pL] matches greek letters and [[0-9]&&[^4]] match
New features:
[\p{Greek}&&\pL] matches greek letters and
[[0-9]&&[^4]] matches every decimal digit except 4.
(Much thanks to @robinst, who contributed this awesome feature.)Bug fixes:
(?x) flag.Captures::get to API documentation.(?x) is used.rure_captures_len in the C binding.BUG #316: Note a missing breaking change from the 0.2.0 CHANGELOG entry. (RegexBuilder::compile was renamed to RegexBuilder::build.)
One major bug with replace_all has been fixed along with a couple of other
touch-ups.
NoExpand to reference correct lifetime parameter.replace_all when replacing a match with the empty string.0.2.0 CHANGELOG entry.
(RegexBuilder::compile was renamed to RegexBuilder::build.)regex should only require one version of memchr crate.There are a number of breaking changes in 0.2. They are split into two types. The first type correspond to breaking changes in regular expression synt…
This is a new major release of the regex crate, and is an implementation of the
regex 1.0 RFC.
We are releasing a 0.2 first, and if there are no major problems, we will
release a 1.0 shortly. For 0.2, the minimum supported Rust version is
1.12.
There are a number of breaking changes in 0.2. They are split into two
types. The first type correspond to breaking changes in regular expression
syntax. The second type correspond to breaking changes in the API.
Breaking changes for regex syntax:
[:upper:] would parse as the upper POSIX character class. Now it parses
as the character class containing the characters :upper:. The fix to this
change is to use [[:upper:]] instead. Note that variants like
[[:upper:][:blank:]] continue to work.[ must always be escaped inside a character class.&, - and ~ must be escaped if any one of them are
repeated consecutively. For example, [&], [\&], [\&\&], [&-&] are all
equivalent while [&&] is illegal. (The motivation for this and the prior
change is to provide a backwards compatible path for adding character class
set notation.)bytes::Regex now has Unicode mode enabled by default (like the main
Regex type). This means regexes compiled with bytes::Regex::new that
don't have the Unicode flag set should add (?-u) to recover the original
behavior.Breaking changes for the regex API:
find and find_iter now return Match values instead of
(usize, usize). Match values have start and end methods, which
return the match offsets. Match values also have an as_str method,
which returns the text of the match itself.Captures type now only provides a single iterator over all capturing
matches, which should replace uses of iter and iter_pos. Uses of
iter_named should use the capture_names method on Regex.at method on the Captures type has been renamed to get, and it
now returns a Match. Similarly, the name method on Captures now returns
a Match.replace methods now return Cow values. The Cow::Borrowed variant
is returned when no replacements are made.Replacer trait has been completely overhauled. This should only
impact clients that implement this trait explicitly. Standard uses of
the replace methods should continue to work unchanged. If you implement
the Replacer trait, please consult the new documentation.quote free function has been renamed to escape.Regex::with_size_limit method has been removed. It is replaced by
RegexBuilder::size_limit.RegexBuilder type has switched from owned self method receivers to
&mut self method receivers. Most uses will continue to work unchanged, but
some code may require naming an intermediate variable to hold the builder.compile method on RegexBuilder has been renamed to build.is_match function has been removed. It is replaced by compiling
a Regex and calling its is_match method.PartialEq and Eq impls on Regex have been dropped. If you relied
on these impls, the fix is to define a wrapper type around Regex, impl
Deref on it and provide the necessary impls.is_empty method on Captures has been removed. This always returns
false, so its use is superfluous.Syntax variant of the Error type now contains a string instead of
a regex_syntax::Error. If you were examining syntax errors more closely,
you'll need to explicitly use the regex_syntax crate to re-parse the regex.InvalidSet variant of the Error type has been removed since it is
no longer used.RegexSplits has been renamed to Split.A number of bugs have been fixed:
Replacer trait has been changed to permit the caller to control
allocation.is_match function.0.1) and remove with_size_limit.Captures now have the correct lifetime parameters.PartialEq and Eq impls on Regex.is_empty from Captures since it always returns false.Captures.PR #292: Fixes bug #291, which was introduced by PR #290.
* Require regex-syntax 0.3.8.
PR #290: Fixes bug #289, which caused some regexes with a certain combination of literals to match incorrectly.
PR #281: Fixes bug #280 by disabling all literal optimizations when a pattern is partially anchored.
Tweak criteria for using the Teddy literal matcher.
PR #275: Improves match verification performance in the Teddy SIMD searcher.
Release regex-syntax 0.3.5 with a minor bug fix.
Bump regex-syntax dependency version for regex to 0.3.4.
regex-syntax 0.3.4.regex-syntax dependency version for regex to 0.3.4.PR #262: Fixes a number of small bugs caught by fuzz testing (AFL).
PR #236: Fix a bug in how suffix literals were extracted, which could lead to invalid match behavior in some cases.
PR #231: Add SIMD accelerated multiple pattern search.
PR #216: Tweak the threshold for running backtracking.
PR #210: Fixed a performance bug in bytes::Regex::replace where extend was used instead of extend_from_slice.
bytes::Regex::replace where extend was used
instead of extend_from_slice.PR #201: Fix undefined behavior in the regex! compiler plugin macro.
regex! compiler plugin macro.0.1.66 was
yanked.)Speculative support for Unicode word boundaries was added to the DFA. This should remove the last common case that disqualified use of the DFA.
re$, it will be matched in reverse from the end of the
haystack.unsafe in regex (to elide bounds checks).mempool crate (which used thread local storage) was replaced
with a faster version of a similar API in @Amanieu's thread_local crate.
It should reduce contention when using a regex from multiple threads
simultaneously.bytes::Regex.Captures now has a Debug impl.Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →