summaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorAndrew Gallant <jamslam@gmail.com>2017-01-09 19:55:56 -0500
committerAndrew Gallant <jamslam@gmail.com>2017-01-09 19:55:56 -0500
commit083fb737901f1942e45d90301a7707e1eb79b939 (patch)
tree385274d6b87f169ba7db25722d5f1910df34f124 /README.md
parent461e0c4e33b38532545af4f97ec92bd367963017 (diff)
add anti-pitch
Diffstat (limited to 'README.md')
-rw-r--r--README.md36
1 files changed, 30 insertions, 6 deletions
diff --git a/README.md b/README.md
index f3eb36c1..a4e9b1a6 100644
--- a/README.md
+++ b/README.md
@@ -7,10 +7,6 @@ works by recursively searching your current directory for a regex pattern.
downloads available for
[every release](https://github.com/BurntSushi/ripgrep/releases).
-ripgrep's regex engine uses finite automata and guarantees linear time
-searching. Because of this, features like backreferences and arbitrary
-lookaround are not supported.
-
[![Linux build status](https://travis-ci.org/BurntSushi/ripgrep.svg?branch=master)](https://travis-ci.org/BurntSushi/ripgrep)
[![Windows build status](https://ci.appveyor.com/api/projects/status/github/BurntSushi/ripgrep?svg=true)](https://ci.appveyor.com/project/BurntSushi/ripgrep)
[![](https://img.shields.io/crates/v/ripgrep.svg)](https://crates.io/crates/ripgrep)
@@ -88,8 +84,36 @@ increases the times to `3.081s` for ripgrep and `11.403s` for GNU grep.
color and full Unicode support. Unlike GNU grep, `ripgrep` stays fast while
supporting Unicode (which is always on).
-In other words, use `ripgrep` if you like speed, sane defaults, fewer bugs and
-Unicode.
+In other words, use `ripgrep` if you like speed, filtering by default, fewer
+bugs and Unicode support.
+
+### Why shouldn't I use `ripgrep`?
+
+I'd like to try to convince you why you *shouldn't* use `ripgrep`. This should
+give you a glimpse at some important downsides or missing features of
+`ripgrep`.
+
+* `ripgrep` uses a regex engine based on finite automata, so if you want fancy
+ regex features such as backreferences or look around, `ripgrep` won't give
+ them to you. `ripgrep` does support lots of things though, including, but not
+ limited to: lazy quantification (e.g., `a+?`), repetitions (e.g., `a{2,5}`),
+ begin/end assertions (e.g., `^\w+$`), word boundaries (e.g., `\bfoo\b`), and
+ support for Unicode categories (e.g., `\p{Sc}` to match currency symbols or
+ `\p{Lu}` to match any uppercase letter). (Fancier regexes will never be
+ supported.)
+* If you need to search files with text encodings other than UTF-8 (like
+ UTF-16), then `ripgrep` won't work. `ripgrep` will still work on ASCII
+ compatible encodings like latin1 or otherwise partially valid UTF-8.
+ `ripgrep` may grow support for additional text encodings over time.
+ `ripgrep` *can* search for arbitrary bytes though, which might work in
+ a pinch. (Likely to be supported in the future.)
+* `ripgrep` doesn't yet support searching compressed files. (Likely to be
+ supported in the future.)
+* `ripgrep` doesn't have multiline search. (Unlikely to ever be supported.)
+
+In other words, if you like fancy regexes, non-UTF-8 character encodings,
+searching compressed files or multiline search, then `ripgrep` may not quite
+meet your needs (yet).
### Is it really faster than everything else?