MakeBoxes for Power not matching when inside Times?
I believe the existing rules for Times
take precedence. (i.e. act first.)
Perhaps a derivative of this can work for you:
MakeBoxes[x_ /; ! FreeQ[Unevaluated@x, Power], TraditionalForm] :=
ToBoxes[Unevaluated[x] /. _Power -> "matched"];
Responding to your entirely valid performance concern please test these for comparison:
MakeBoxes[x_Times /; ! FreeQ[Unevaluated@x, Power], TraditionalForm] :=
ToBoxes[Unevaluated[x] /. _Power -> "matched"];
Or:
MakeBoxes[a___ * x_Power * b___, TraditionalForm] := MakeBoxes[a * "matched" * b]
Inspired by Mr. Wizard's answers, here is another possibility:
MakeBoxes[c_. x_Power, TraditionalForm] := MakeBoxes[c "matched"]