Yes, you can use the contains()predicate filter inside the matching criteria for elements.
<xsl:template match="*[contains(local-name(),'OP')]>
<OP>
<xsl:apply-templates select="@*|node()"/>
</OP>
</xsl:template>
You can also use starts-with()
*[starts-with(local-name(),'OP')]
If you are using XSLT 2.0, you can use a function matches()that supports REGEX templates for more complex matching.
*[matches(local-name(),'^OP')]