std.regex with multiple matches

David Gileadi gileadis at NSPMgmail.com
Thu Apr 21 10:43:16 PDT 2011


I was using std.regex yesterday, matching a regular expression against a 
string with the "g" flag to find multiple matches.  As the example from 
the docs shows (BTW I think the example may be wrong; I think it needs 
the "g" flag added to the regex call), you can do a foreach loop on the 
matches like:

foreach(m; match("abcabcabab", regex("ab")))
{
     writefln("%s[%s]%s", m.pre, m.hit, m.post);
}

Each match "m" is a RegexMatch, which includes .pre, .hit, and .post 
properties to return ranges of everything before, inside, and after the 
match.

However what I really wanted was a way to get the range between matches, 
i.e. since I had multiple matches I wanted something like m.upToNextMatch.

Since I'm not very familiar with ranges, am I missing some obvious way 
of doing this with the existing .pre, .hit and .post properties?

-Dave


More information about the Digitalmars-d-learn mailing list