On Monday, 25 May 2015 at 11:11:50 UTC, Chris wrote:
I'm a bit at a loss here. I cannot get the longest possible
match. I tried several versions with eager operators and stuff,
but D's regex engine(s) always seem to return the shortest
match. Is there something embarrassingly simple I'm missing?
void main()
{
import std.regex : regex, matchFirst;
import std.stdio : writeln;
auto word = blablahula;
auto m = matchFirst(word, regex(^([a-z]+)(hula|ula)$));
writeln(m); // prints [blablahula, blablah, ula]
}
I want it to return hula not ula.
Make the + operator less greedy:
matchFirst(word, regex(^([a-z]+?)(hula|ula)$));