help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: String Index


From: Ben Abbott
Subject: Re: String Index
Date: Mon, 27 Jun 2016 11:59:13 -0400

> On Jun 27, 2016, at 11:43, Thomas D. Dean <address@hidden> wrote:
> 
>> On 06/26/2016 09:56 PM, PhilipNienhuis wrote:
>> Thomas D. Dean-2 wrote
>>> I have a string, 87 characters. containing pairs of parens enclosing
>>> characters.  The number of chars enclosed is not constant.  There are 2
>>> to 5 pairs of parens.  How do I construct the index to vectorize this?
>>> 
>>>  > n=numel(str)
>>> n =  87
>>>  > lp = [1:n](str == "(");
>>>  > rp = [1:n](str == ")");
>>>  > ## check to see if parens paired and lp < rp
>>>  > [lp', rp']
>>> ans =
>>>     38   47
>>>     54   57
>>>     66   73
>>>     85   87
>>> 
>>> I want to extract values from str using lp and rp
>>> 
>>>  > [ str(lp(1):rp(1));
>>>  >   str(lp(2):rp(2));
>>>  >   str(lp(3):rp(3));
>>>  >   str(lp(4):rp(4)) ]
>>> ans =
>>> (10^20 kg)
>>> (km)
>>> (kg/m^3)
>>> (1)
>> 
>> Read up on regexp()
> 
> I played with regexp() some, but, could not find a pattern that matched just 
> the characters within the parens.
> 
> > str
> 
> > str = "_units_           (10^15 kg)         (km)          (kg/m^3)   "
> > [s, e, te, m, t, nm, sp] = regexp(str,"\(...\){3,5}");m
> > m
> m =
> {
>  [1,1] = _units_
>  [1,2] =    (10^15 kg)
>  [1,3] =        (km)
>  [1,4] =       (kg/m^3)
> 
> }
> 
> is close, but, still needs some parsing.  Most likely not better than using 
> strtok.

Does this provide the result you're looking for?

regexp (str, '\([^()]*\)', 'match')

Ben


reply via email to

[Prev in Thread] Current Thread [Next in Thread]