⭐️ Regex filters¶
Regex replace¶
| Filter | Description |
|---|---|
s:X:Y |
Replace first match of a regular expression X with Y.Y can reference capture groups from X using $0, $1, $2, ...Any other character than : can be also used as a delimiter. |
s:X |
Remove first match of a regular expression X.Equivalent to s:X:. |
S:X:YS:X |
Same as s but replaces/removes all matches. |
Examples:
| Input | Pattern | Output |
|---|---|---|
12_34 |
{s:\d+:x} |
x_34 |
12_34 |
{S:\d+:x} |
x_x |
12_34 |
{s:(\d)(\d):$2$1} |
21_34 |
12_34 |
{S:(\d)(\d):$2$1} |
21_43 |
Regex match¶
| Filter | Description |
|---|---|
=E |
Match of a regular expression E. |
Examples:
| Input | Pattern | Output |
|---|---|---|
12_34 |
{=\d+} |
12 |
Regex switch¶
| Filter | Description |
|---|---|
@:X:Y |
Output Y if input matches regular expression XOutput nothing when there is no match.. Y can reference capture groups from X using $0, $1, $2, ...Any other character than : can be also used as a delimiter. |
@:X:Y:D |
Output Y if input matches regular expression X.Output D when there is no match. |
@:X1:Y1:...:Xn:Yn:D |
Output Yi for first regular expression Xi that matches input.Output D when there is no match. |
@:D |
A switch without any Xi/Yi cases which will always output D. |
Examples:
| Input | Pattern | Output |
|---|---|---|
| (any) | {@:def} |
def |
12 |
{@:^\d+$:number} |
number |
1x |
{@:^\d+$:number} |
(empty) |
12 |
{@:^\d+$:number:string} |
number |
1x |
{@:^\d+$:number:string} |
string |
ab |
{@:^[a-z]+$:lower:^[A-Z]+$:upper:mixed} |
lower |
AB |
{@:^[a-z]+$:lower:^[A-Z]+$:upper:mixed} |
upper |
Ab |
{@:^[a-z]+$:lower:^[A-Z]+$:upper:mixed} |
mixed |
a=b |
{@/(.+)=(.*)/key: $1, value: $2/invalid} |
key: a, value: b |
ab |
{@/(.+)=(.*)/key: $1, value: $2/invalid} |
invalid |
Global regex¶
| Filter | Description |
|---|---|
$0, $1, $2, ... |
Capture group of a global regular expression. |
- Use
-e, --regexor-E, --regex-filenameoption to define a global regular expression. - Option
-e, --regexmatches regex against each input value. - Option
-E, --regex-filenamematches regex against filename component of each input value.
echo 'a/b.c' | rew -e '([a-z])' '{$1}' # Will print 'a'
echo 'a/b.c' | rew -E '([a-z])' '{$1}' # Will print 'b'