These functions differ in how they are vectorised. ore_subst
vectorises over matches, and returns a vector of the same length as the
text
argument. If multiple replacements are given then they are
applied to matches in turn. ore_repl
vectorises over replacements,
replicating the elements of text
as needed, and (in general)
returns a list the same length as text
, whose elements are character
vectors each of the same length as replacement
(or its return value,
if a function). Each string combines the first replacement for each match,
the second, and so on.
If replacement
is a character vector, its component strings may
include back-references to captured substrings. "\\0"
corresponds
to the whole matching substring, "\\1"
is the first captured
group, and so on. Named groups may be referenced as "\\k<name>"
.
If replacement
is a function, then it will be passed as its first
argument an object of class "orearg"
. This is a character vector
containing as its elements the matched substrings, and with an attribute
containing the matches for parenthesised subgroups, if there are any. A
groups
method is available for this class, so the groups
attribute can be easily obtained that way. The substitution function will be
called once per element of text
by ore_subst
, and once per
match by ore_repl
.