Regex-Fu
Namespace via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon May 25 04:18:18 PDT 2015
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)$"));
More information about the Digitalmars-d-learn
mailing list