From 5460517bd2ecf5c3437cfe77821b3cf524bc69d5 Mon Sep 17 00:00:00 2001 From: Junegunn Choi Date: Sun, 12 Jan 2025 10:23:43 +0900 Subject: Treat a single-character delimiter as a plain string delimiter even if it's a regular expression meta-character Close #4170 --- src/options.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'src/options.go') diff --git a/src/options.go b/src/options.go index 404958c7..ac4a1aca 100644 --- a/src/options.go +++ b/src/options.go @@ -755,18 +755,23 @@ func delimiterRegexp(str string) Delimiter { // Special handling of \t str = strings.ReplaceAll(str, "\\t", "\t") - // 1. Pattern does not contain any special character + // 1. Pattern is a single character + if len([]rune(str)) == 1 { + return Delimiter{str: &str} + } + + // 2. Pattern does not contain any special character if regexp.QuoteMeta(str) == str { return Delimiter{str: &str} } rx, e := regexp.Compile(str) - // 2. Pattern is not a valid regular expression + // 3. Pattern is not a valid regular expression if e != nil { return Delimiter{str: &str} } - // 3. Pattern as regular expression. Slow. + // 4. Pattern as regular expression. Slow. return Delimiter{regex: rx} } -- cgit v1.2.3