On Wednesday 25 June 2008 10:21, Nathan Neff wrote:
> For example, I want to find all non-whitespace characters in the
> string "Gambas", and
> iterate through them.  I tried code like this:
>   rege.Compile("(\\S)")
>   FOR i = 1 TO rege.SubMatches.count
>     Message(rege.SubMatches[i].Text)
> But I can only get it to print out the "g" character.

Submatches refer to the parts of your regular expression in 
parentheses; matches don't automatically repeat unless you call Exec 
multiple times.  For example, if you wrote

        rege.Compile("(\\S)..(\\S).(\\S)")

you would get three entries in Submatches, which would be g, b and s.  
You should theoretically be able to do this, but I just tested it in 
a Perl one-liner and there it only returns the last character:

        rege.Compile("(\\S)+")

A better solution is to use the Offset property and write your own 
method to do a global search (here's some pseudocode to get you 
started:)

private function GRX(pattern as string, subject as string) as String[]

   dim re as new Regexp
   dim matches as new String[]
   dim tmp as string

   tmp = subject
   re.Compile(pattern)
   re.Exec(tmp)
   do while re.text <> ""
      matches.add(re.text)
      tmp = mid(tmp, re.offset + 2) ' may need to be 1, can't remember
      re.Exec(tmp)
   loop

   return matches

end

I probably should have just come up with some way to do that inside 
the component, but it didn't occur to me at the time.

I see that most of the class member documentation never made it over 
from the old Wiki to the current one, so I'll try to take some time 
and fix that if I can find my old static copy of the wiki.  I wonder 
if it would be useful to at least default to a syntax summary (as in 
VB's class inspector) rather than prompting the user to edit the page 
if the documentation's missing.  As it is, if you edit the page but 
leave it blank and save it, the wiki inserts the syntax summary 
anyway.

Rob

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://sourceforge.net/services/buy/index.php
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to