Regular Expressions in Renamer Plugin
The Renamer plugin uses more powerful regular expressions than Find and Internal Viewer in Altap Salamander. It extends REGEXP library, which is a great work of Henry Spencer. First see the Regular Expressions Syntax in Altap Salamander and then continue with description of Renamer extensions. These extensions were inspired in Perl.
Extended syntax
- '*?' - non-greedy variant of '*' (match 0 or more times)
- '+?' - non-greedy variant of '+' (match 1 or more times)
- '??' - non-greedy variant of '?' (match 0 or 1 times)
- '$' - at the end of the expression matches the end of a line (or before newline at the end)
- '( )' - glues expressions in parentheses to one expression and captures a matched substring (see this example to understand how it works)
- '(?: )' - works like "( )", but does not capture a matched substring
Note: "non-greedy" means that it matches the minimum number of times possible.
Zero-width assertions
You can use following zero-width assertions (it does not match any character, just test if some condition is true or not):
Assertion | Meaning |
---|---|
\b | Match a word boundary. |
\B | Match a non-(word boundary). |
\A | Match only at beginning of string. |
\Z | Match only at end of string, or before newline at the end. |
\z | Match only at end of string. |
(?= ) | Positive look-ahead assertion (for example, 'j(?=ohn)' matches 'j' in word 'john' but not in word 'june'). |
(?! ) | Negative look-ahead assertion (for example, 'j(?!ohn)' matches 'j' in word 'june' but not in word 'john'). |
(?<= ) | Positive look-behind assertion (for example, '(?<=joh)n' matches 'n' in word 'john' but not in word 'joan'). |
(?<! ) | Negative look-behind assertion (for example, '(?<!joh)n' matches 'n' in word 'joan' but not in word 'john'). |
Within character classes "\b" represents backspace rather than a word boundary.
POSIX character classes
You can use following POSIX character classes:
Class | Backslash Equivalent | Meaning |
---|---|---|
alpha | Alphabetic characters. | |
alnum | Alphanumeric characters. | |
ascii | ASCII characters. | |
cntrl | Control characters. | |
digit | \d | Decimal digits. |
graph | Characters that are both printable and visible (a space is printable but not visible). | |
lower | Lowercase alphabetic characters. | |
Printable characters (characters that are not control characters). | ||
punct | Punctuation characters (characters that are not letters, digits, control characters, or space characters). | |
space | \s | Spacing characters (e.g. space, TAB, formfeed). |
upper | Uppercase alphabetic characters. | |
word | \w | Alphanumeric characters plus underscore ("_"). |
xdigit | Characters that are hexadecimal digits. |
You can negate the character classes by prefixing the class name with a '^'.
Usage: [[:alpha:]] (alphabetic characters), [01[:alpha:]%] (alphabetic characters plus 0, 1, and %), [[:^digit:]] (all characters except decimal digits).
Short forms of some character classes
You can use following short forms of character classes:
Class | Meaning |
---|---|
\w | Alphanumeric characters plus underscore ("_"). |
\W | All characters except alphanumeric characters and underscore ("_"). |
\s | Spacing characters (e.g. space, TAB, formfeed). |
\S | All characters except spacing characters (e.g. space, TAB, formfeed). |
\d | Decimal digits. |
\D | All characters except decimal digits. |
Special characters
You can use following special characters:
Special character | Meaning |
---|---|
\t | tab |
\n | newline |
\r | return |
\f | formfeed |
\a | alarm (bell) |
\b | backspace |
\x5A | character 'Z' with ordinal 0x5A (hexadecimal value) |