[Gambas-user] Re gexp Submatches

Nate-37 Nathan.Neff at ...626...
Wed Jun 25 23:33:33 CEST 2008


Wow!

Thank you Rob.

I found some problems with your pseudo-code, but I got it to do what I
wanted.

I uploaded a snapshot of my program, as well as the .class and the .form
files to my website

http://notesmine.com/gambas_regexp

Thank you for your help!

PS: I also was confused by the wiki, when I was prompted for a
username/password when I clicked on the properties of the Regexp.

--Nate


Rob Kudla wrote:
> 
> 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 at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/gambas-user
> 
> 

-- 
View this message in context: http://www.nabble.com/Regexp-Submatches-tp18113718p18122201.html
Sent from the gambas-user mailing list archive at Nabble.com.





More information about the User mailing list