You wish to make substitutions in all except `Subscript` expressions I believe. This can be done by leveraging the precedence of replacement rules, like this: {p, Subscript[p, 1], Subscript[p, 2]} /. {x_Subscript :> x, p -> 1} > {1, Subscript[p, 1], Subscript[p, 2]} Due to the [traversal order][1] of `ReplaceAll` the rule `x_Subscript :> x` acts first, "replacing" any expression with the head `Subscript` by itself. Since expressions that have already been replaced are not matched again, the second rule `p -> 1` is never applied to these subexpressions. [1]: https://mathematica.stackexchange.com/a/9234/121