From a6628709c50a497288df9fe2a7d19db089ca4e05 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Sun, 15 Nov 2020 14:22:16 +0100 Subject: [PATCH] Annotate RegEx for invalid-escape check --- rslib/src/search/parser.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/rslib/src/search/parser.rs b/rslib/src/search/parser.rs index 6c3a35f07..a9df06dd0 100644 --- a/rslib/src/search/parser.rs +++ b/rslib/src/search/parser.rs @@ -447,7 +447,15 @@ fn unescape_quotes(s: &str) -> Cow { fn is_invalid_escape(txt: &str) -> bool { // odd number of \s not followed by an escapable character lazy_static! { - static ref RE: Regex = Regex::new(r#"(^|[^\\])(\\\\)*\\([^\\":*_()]|$)"#).unwrap(); + static ref RE: Regex = Regex::new( + r#"(?x) + (?:^|[^\\]) # not a backslash + (?:\\\\)* # even number of backslashes + \\ # single backslash + (?:[^\\":*_()]|$) # anything but an escapable char + "# + ) + .unwrap(); } RE.is_match(txt)