diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2022-07-21 21:21:06 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2022-07-21 21:21:06 +0900 |
commit | 0d06c28b1943e820440cff9182a0ae3bdd5e3c59 (patch) | |
tree | d261701bfd4af5a1d86f70676b14cbc45ea6c02d /src/tokenizer.go | |
parent | ccc46772525f8cbfbd3f1b836d43e07ec181c266 (diff) |
Fix delimiter regex to properly support caret (^)
Fix #2861
Diffstat (limited to 'src/tokenizer.go')
-rw-r--r-- | src/tokenizer.go | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/tokenizer.go b/src/tokenizer.go index 26f42d25..9f9e2c19 100644 --- a/src/tokenizer.go +++ b/src/tokenizer.go @@ -156,14 +156,14 @@ func Tokenize(text string, delimiter Delimiter) []Token { // FIXME performance var tokens []string if delimiter.regex != nil { - for len(text) > 0 { - loc := delimiter.regex.FindStringIndex(text) - if len(loc) < 2 { - loc = []int{0, len(text)} - } - last := util.Max(loc[1], 1) - tokens = append(tokens, text[:last]) - text = text[last:] + locs := delimiter.regex.FindAllStringIndex(text, -1) + begin := 0 + for _, loc := range locs { + tokens = append(tokens, text[begin:loc[1]]) + begin = loc[1] + } + if begin < len(text) { + tokens = append(tokens, text[begin:]) } } return withPrefixLengths(tokens, 0) |