Given [1, x, x^2, x^3] write pattern to change all x^n::anything to r(n)
In Maple
L:=[1, x, x^2, x^3]; map( proc(X) local la,n; if patmatch(X,x^n::'nonunit'(anything),'la') then r(eval(n,la)); else X; fi; end proc, L); [1, x, r(2), r(3)]
In Mathematica
{1, x, x^2, x^3} /. x^n_ -> r[n] {1, x, r[2], r[3]}