regex_syntax

Function is_escapeable_character

Source
pub fn is_escapeable_character(c: char) -> bool
Expand description

Returns true if the given character can be escaped in a regex.

This returns true in all cases that is_meta_character returns true, but also returns true in some cases where is_meta_character returns false. For example, % is not a meta character, but it is escapeable. That is, % and \% both match a literal % in all contexts.

The purpose of this routine is to provide knowledge about what characters may be escaped. Namely, most regex engines permit “superfluous” escapes where characters without any special significance may be escaped even though there is no actual need to do so.

This will return false for some characters. For example, e is not escapeable. Therefore, \e will either result in a parse error (which is true today), or it could backwards compatibly evolve into a new construct with its own meaning. Indeed, that is the purpose of banning some superfluous escapes: it provides a way to evolve the syntax in a compatible manner.

§Example

use regex_syntax::is_escapeable_character;

assert!(is_escapeable_character('?'));
assert!(is_escapeable_character('-'));
assert!(is_escapeable_character('&'));
assert!(is_escapeable_character('#'));
assert!(is_escapeable_character('%'));
assert!(is_escapeable_character('/'));
assert!(is_escapeable_character('!'));
assert!(is_escapeable_character('"'));

assert!(!is_escapeable_character('e'));