Re: Pattern Matching Question
- To: mathgroup at smc.vnet.net
- Subject: [mg116743] Re: Pattern Matching Question
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Fri, 25 Feb 2011 06:38:30 -0500 (EST)
Presumably you mean this:
ls = {x^2, x^a, x^(a + b)};
Cases[ls, Except[HoldPattern[x^(_ + _)], x^_], {1}]
{x^2, x^a}
Note that using HoldPattern is crucial here since otherwise: Power[x,Plus[_,_]] evaluates to something you do not want:
x^(_ + _)
x^(2*_)
Andrzej Kozlowski
On 24 Feb 2011, at 12:23, Just A Stranger wrote:
> I'm new to pattern matching, and am stuck on a seemingly simple probem:
>
> If I want to transform a pattern like
>
> (I) Power[x,_] i.e. x^_
>
> but NOT
>
> (II) Power[x,Plus[_,_]] i.e. x^(_+_)
>
> How would I go about making that rule?
>
> x^_ -> NewForm
>
> Applies the rule to (II), which I don't want.
>
> Thank you for your help :)
>
>
>