Re: patterns
- To: mathgroup at smc.vnet.net
 - Subject: [mg101893] Re: patterns
 - From: Albert Retey <awnl at gmx-topmail.de>
 - Date: Mon, 20 Jul 2009 19:22:47 -0400 (EDT)
 - References: <h41f5m$rin$1@smc.vnet.net>
 
Francisco Gutierrez wrote:
> Dear Group:
> Ther output of a code I made (which includes a minimization) is of the following guise:
>  
> {11.2,{dUp[1]->0.,dUp[2]->0.,dUp[3]->0.,dUp[4]->2.1,dUp[5]->0.,dUm[1]->0.,dUm[2]->2.6,dUm[3]->0.5,dUm[4]->0.,dUm[5]->0.,dLp[1]->0.,dLp[2]->0.,dLp[3]->0.,dLp[4]->1.4,dLp[5]->0.,dLm[1]->0.,dLm[2]->3.1,dLm[3]->1.5,dLm[4]->0.,dLm[5]->0.,a[1]->6.75,a[2]->1.25,c[1]->1.65,c[2]->0.15}}
>  
> Of this output, I want to capture only the a's and the c's. There is an easy and sloppy manner, but general and I think not slow, to do this because they appear always at the end of the output. But I wonder if it were possible to use pattern matching to make the same thing, something of the sort of Cases[myoutput, a[__]]. Is it possible? How can it be done? 
> Thanks
> Francisco       
> 
If I define
res = <above list>
this will do the trick:
Cases[res, Verbatim[Rule][(a | c)[___], _], {2}]
I think it should be efficient enough if your list of rules is less than
a few hundred or thousend entries long...
hth,
albert