I try to understand the functions
string-match in Emacs Lisp.
The manual provides what seems to be (?) a reproducible example:
(string-match "\\(qu\\)\\(ick\\)" "The quick fox jumped quickly.") ;0123456789 ⇒ 4 (match-string 0 "The quick fox jumped quickly.") ⇒ "quick"
But this is not what I get if I try to execute those instructions. If I simply copy-paste them into a buffer and execute them with
C-x C-e, the first one is OK and actually returns 4, but the second one triggers an error:
Debugger entered--Lisp error: (args-out-of-range "The quick fox jumped quickly." 341 341) match-string(0 "The quick fox jumped quickly.") eval((match-string 0 "The quick fox jumped quickly.") nil) elisp--eval-last-sexp(nil) eval-last-sexp(nil) funcall-interactively(eval-last-sexp nil) call-interactively(eval-last-sexp nil nil) command-execute(eval-last-sexp)
All the following examples presented in the manual also trigger similar errors.
I'm using Emacs 26.3. Is there a subtlety I don't understand (e.g., should
match-string be called in a specific context)?