Skip to content

ReplaceAll

expr /. rule replaces all occurences of the LHS of rule with the RHS of rule in expr.

expr /. {r1, r2, ...} performes the same operation as expr /. rule, but evaluating each r_n in sequence.

Attributes[ReplaceAll] := {Protected}

Simple examples

In[1]:= ((2^(x^2 + 1) + x^2)) /. ((x^2 -> y))
Out[1]= 2^(y + 1) + y
If no match is found, ReplaceAll evaluates to an unchanged expr:
In[2]:= ((2^(x^2 + 1) + x^2)) /. ((z^2 -> y))
Out[2]= 2^(x^2 + 1) + x^2
ReplaceAll works within Orderless expressions as well (such as Plus):
In[3]:= ((a + b + c + c^2)) /. ((c^2 + a -> d))
Out[3]= b + c + d
ReplaceAll can use named patterns:
In[4]:= ((a + b + c + d)) /. ((x_Symbol + y_Symbol -> x^y))
Out[4]= a^b + c + d
In[5]:= ((a + 2*b + 5*c)) /. ((c1_Integer*a_Symbol -> 99*a))
Out[5]= a + 99*b + 99*c

Further examples

ReplaceAll can be used to replace sequences of expressions:

In[1]:= ((a + b + c + d)) /. ((a + amatch___ -> foo[amatch]))
Out[1]= foo[b, c, d]
The Head of functions can be replaced just as the subexpressions:
In[2]:= ((x + 2)[5, 6]) /. ((2 + x -> Plus))
Out[2]= 11
In[3]:= ((a*b*c*d)) /. ((_Symbol -> 2))
Out[3]= 2[2, 2, 2, 2]