Multiple arguments with the filter command

Marielle Lange mlange at
Wed Oct 25 15:00:19 EDT 2006

> One catch is that if the user inputs something like "53", the  
> operation
> must recognize the fact that the "53" in the first two examples is  
> not a
> part of the file name, thereby filtering them out, but that "53" is a
> part of the file name in the third example, thereby filtering it in.
> This is one reason for the exclamation point tokens in vContainer.

Now for that catch:

   put "53" into tSearch
   repeat for each item tItem in tSearch
     replace tItem with "%" & tItem in tFileList
   end repeat
   filter tFileList with "*%*"
   repeat for each line tLine in tFileList
       get matchtext(tLine & cr, "((/[^/%]*)%?([^/%]*/[^/%]*)%?([^/%] 
*))" & cr, tFull, match1, match2, match3)
       if it is true then
         replace tFull with match1 & match2 & match3 in tFileList
       end if
     end repeat
     filter tFileList with "*%*"
     replace "%" with "" in tFileList
    --> do something with  tFileList


well the difficult part is this one:

I am afraid, that's a regular expression. They are handy but they can  
be quite daunting.
Because of the cr that follows the end of the string, this will only  
match the /<filesize>/<creationdate> parts of the string.
tFull will match the biggest parenthesis, then match1/2/3 the small  
[^/%] mean any character but / or %.
[^/%]* mean any number of character that match that pattern
%? means try to match a % if you can find one.

by replacing tFull with the set of matches I simply replace the  
string that includes the % with a string where any % doesn't appear.

Note that this may not work property if you have 53 appearing more  
than one time in the string.
What you need to do then is transform this:
([^/%]*)%?([^/%]*)+  which means one or more repetitions of that  

Hope this helps,

Marielle Lange (PhD),
Bite-size Applications for Education

More information about the Use-livecode mailing list