From a700b758436548560aab16609e998c32180c824a Mon Sep 17 00:00:00 2001 From: Andrew Gallant Date: Thu, 21 May 2020 22:22:51 -0400 Subject: [PATCH] doc: clarify capture group indices And in particular, note the special $0 index, which corresponds to the entire match. Fixes #1591 --- CHANGELOG.md | 2 ++ crates/core/app.rs | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 88169fb..3065138 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Bug fixes: * [BUG #1581](https://github.com/BurntSushi/ripgrep/issues/1581): Corrects some egregious markup output in `--help`. +* [BUG #1591](https://github.com/BurntSushi/ripgrep/issues/1591): + Mention the special `$0` capture group in docs for the `-r/--replace` flag. 12.1.0 (2020-05-09) diff --git a/crates/core/app.rs b/crates/core/app.rs index 9535844..927b397 100644 --- a/crates/core/app.rs +++ b/crates/core/app.rs @@ -2576,10 +2576,13 @@ Replace every match with the text given when printing results. Neither this flag nor any other ripgrep flag will modify your files. Capture group indices (e.g., $5) and names (e.g., $foo) are supported in the -replacement string. In shells such as Bash and zsh, you should wrap the -pattern in single quotes instead of double quotes. Otherwise, capture group -indices will be replaced by expanded shell variables which will most likely -be empty. +replacement string. Capture group indices are numbered based on the position of +the opening paranthesis of the group, where the leftmost such group is $1. The +special $0 group corresponds to the entire match. + +In shells such as Bash and zsh, you should wrap the pattern in single quotes +instead of double quotes. Otherwise, capture group indices will be replaced by +expanded shell variables which will most likely be empty. To write a literal '$', use '$$'.