1
0
mirror of https://github.com/BurntSushi/ripgrep.git synced 2025-08-04 21:52:54 +02:00
Files
ripgrep/crates/pcre2
Andrew Gallant afc820c9e9 cli: make rg -vf file behave sensibly
Previously, when `file` is empty (literally empty, as in, zero byte),
`rg -f file` and `rg -vf file` would behave identically. This is odd
and also doesn't match how GNU grep behaves. It's also not logically
correct. An empty file means _zero_ patterns which is an empty set. An
empty set matches nothing. Inverting the empty set should result in
matching everything.

This was because of an errant optimization that lets ripgrep quit early
if it can statically detect that no matches are possible.

Moreover, there was *also* a bug in how we constructed the PCRE2 pattern
when there are zero patterns. PCRE2 doesn't have a concept of sets of
patterns (unlike the `regex` crate), so we need to fake it with an empty
character class.

Fixes #1332, Fixes #3001, Closes #3041
2025-07-27 15:09:19 -04:00
..
2025-07-27 15:09:19 -04:00
2024-09-08 22:08:41 -04:00
2021-06-01 21:07:37 -04:00

grep-pcre2

The grep-pcre2 crate provides an implementation of the Matcher trait from the grep-matcher crate. This implementation permits PCRE2 to be used in the grep crate for fast line oriented searching.

Build status

Dual-licensed under MIT or the UNLICENSE.

Documentation

https://docs.rs/grep-pcre2

NOTE: You probably don't want to use this crate directly. Instead, you should prefer the facade defined in the grep crate.

If you're looking to just use PCRE2 from Rust, then you probably want the pcre2 crate, which provide high level safe bindings to PCRE2.

Usage

Add this to your Cargo.toml:

[dependencies]
grep-pcre2 = "0.1"