Is str ~ regex the root of all evil, or the leaf of all good?
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Thu Feb 19 10:37:35 PST 2009
bearophile wrote:
> Andrei Alexandrescu:
>
>> foreach (i; 0 .. iter.captures) writeln(iter.capture(i));
>
>> "Capture" is the traditional term as far as I understand. I can't
>> use .length because it messes up with range semantics. "len" would
>> be too confusing. "ncaptures" is too cute. Nobody's perfect :o).
>
>>> "group" may be a struct that defines toString and can be cast to
>>> string, and also keeps the starting position of the group into
>>> the original string.
>
>> That sounds good.
>
> Well, then match() may return just a dynamic array of such
> groups/captures. So such array has both .length and opIndex. It looks
> simple :-)
Looks simple but it isn't. How do you advance to the next match?
foreach (m; "abracadabra".match("(.)a", "g")) writeln(m.capture[0]);
This should print:
r
c
d
r
There's need to make progress in the matching, not in the capture. How
do you distinguish among them?
Andrei
More information about the Digitalmars-d
mailing list