Skip to contents

Match and replace elements of patterns in an expression or a list of expressions.

Usage

expr_replace(expr, ..., patterns, replacements,
    n = Inf, env = parent.frame())

Arguments

expr

Input. An expression, expr_list, or list() of expressions.

...

Alternating series of patterns and replacements, each a single expression (though alternatives can be specified with ?).

patterns

Patterns to look for. An expression, expr_list, or list() of expressions.

replacements

Replacements, one for each pattern.

n

Maximum number of times for each expression to make each replacement; default is Inf.

env

Environment for injections in expr, pattern (see expression).

Value

The input expression(s) with any replacements made.

Details

Patterns follow the syntax for expr_match().

See also

expr_match() to find patterns in expressions, and its cousins expr_count(), expr_detect(), expr_extract(), and expr_locate().

Examples

# Example with alternating patterns and replacements
expr_replace({ 1 + 2 }, {1}, {one}, {2}, {two})
#> one + two

# Example with patterns and replacements in a list
expr_replace({ 1 + 2 }, patterns = expr_list({1}, {2}),
    replacements = expr_list({one}, {two}))
#> one + two

# Replace with captures
expr_replace({ 1 + 2 }, ~{ .A + .B }, { .A - .B })
#> 1 - 2