Using regex to "sort" its matches
Dmitry Olshansky
dmitry.olsh at gmail.com
Tue Apr 16 13:00:29 PDT 2013
16-Apr-2013 22:59, Linden Krouse пишет:
> Is there a way to use the regex library to put matches of different
> regexs or classes into different slices? For instance, if I had the
> regular expressions "(?<=#)\w+\b" and "(?<=%)\w+\b", could I use them to
> match a string at the same time and stop if the first one is found and
> keep their results separate (as if the regex was
> "(?<=#)\w+\b|(?<=%)\w+\b)" and gave a slice for "(?<=#)\w+\b" and a
> different one for "(?<=%)\w+\b" ). I'm a little new to regexs for the
> record.
For that particular case you can as well use this pattern:
"(?<=#|%)\w+\b"
and then check what character is the last one before your match by hand:
foreach(m; match(<your string>, "(?<=#|%)\w+\b")){
if(m.pre.back == '#')
//put in one place
else if(m.pre.back == '%')
// put somewhere else
}
More general interface to do it is being discussed recently, in essence
it gives you ability to switch over a bunch of regular expressions.
See:
https://github.com/D-Programming-Language/phobos/pull/1241
The machinery to efficiently combine regular expressions like that will
come sometime later but the interface should stay the same.
--
Dmitry Olshansky
More information about the Digitalmars-d-learn
mailing list