ore_subst {ore} | R Documentation |
Replace matched substrings with new text
Description
These functions substitute new text into strings in regions that match a regular expression. The substitutions may be simple text, may include references to matched subgroups, or may be created by an R function.
Usage
ore_subst(regex, replacement, text, ..., all = FALSE, start = 1L)
ore_repl(regex, replacement, text, ..., all = FALSE, start = 1L,
simplify = TRUE)
Arguments
regex |
A single character string or object of class |
replacement |
A character vector, or a function to be applied to the matches. |
text |
A vector of strings to match against. |
... |
Further arguments to |
all |
If |
start |
An optional vector of offsets (in characters) at which to start
searching. Will be recycled to the length of |
simplify |
For |
Details
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
.
Value
Versions of text
with the substitutions made.
See Also
Examples
# Simple text substitution (produces "no dogs")
ore_subst("\\d+", "no", "2 dogs")
# Back-referenced substitution (produces "22 dogs")
ore_subst("(\\d+)", "\\1\\1", "2 dogs")
# Function-based substitution (produces "4 dogs")
ore_subst("\\d+", function(i) as.numeric(i)^2, "2 dogs")