mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Add rx.el support for numbered groups (Bug#8776).
* lisp/emacs-lisp/rx.el (rx-constituents): Add support for numbered groups. (rx-submatch-n): New function. (rx): Document it.
This commit is contained in:
parent
ddb8b596be
commit
6420d28b9a
3 changed files with 25 additions and 0 deletions
|
|
@ -130,6 +130,8 @@
|
|||
(** . (rx-** 2 nil)) ; SRE
|
||||
(submatch . (rx-submatch 1 nil)) ; SRE
|
||||
(group . submatch) ; sregex
|
||||
(submatch-n . (rx-submatch-n 2 nil))
|
||||
(group-n . submatch-n)
|
||||
(zero-or-more . (rx-kleene 1 nil))
|
||||
(one-or-more . (rx-kleene 1 nil))
|
||||
(zero-or-one . (rx-kleene 1 nil))
|
||||
|
|
@ -690,6 +692,16 @@ FORM is either `(repeat N FORM1)' or `(repeat N M FORMS...)'."
|
|||
(mapconcat (lambda (re) (rx-form re ':)) (cdr form) nil))
|
||||
"\\)"))
|
||||
|
||||
(defun rx-submatch-n (form)
|
||||
"Parse and produce code from FORM, which is `(submatch-n N ...)'."
|
||||
(let ((n (nth 1 form)))
|
||||
(concat "\\(?" (number-to-string n) ":"
|
||||
(if (= 3 (length form))
|
||||
;; Only one sub-form.
|
||||
(rx-form (nth 2 form))
|
||||
;; Several sub-forms implicitly concatenated.
|
||||
(mapconcat (lambda (re) (rx-form re ':)) (cddr form) nil))
|
||||
"\\)")))
|
||||
|
||||
(defun rx-backref (form)
|
||||
"Parse and produce code from FORM, which is `(backref N)'."
|
||||
|
|
@ -1072,6 +1084,11 @@ CHAR
|
|||
like `and', but makes the match accessible with `match-end',
|
||||
`match-beginning', and `match-string'.
|
||||
|
||||
`(submatch-n N SEXP1 SEXP2 ...)'
|
||||
`(group-n N SEXP1 SEXP2 ...)'
|
||||
like `group', but make it an explicitly-numbered group with
|
||||
group number N.
|
||||
|
||||
`(or SEXP1 SEXP2 ...)'
|
||||
`(| SEXP1 SEXP2 ...)'
|
||||
matches anything that matches SEXP1 or SEXP2, etc. If all
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue