I'm using std.regex from Phobos 2, which I heard was relatively new. My regex is supposed to match a time to start playback in a game replay's file name (usually user-written). It's very adaptive and works perfectly on http://regextester.com but doesn't match properly with Phobos.

I wrote a test program which displays filenames and the matched timecodes.
It's located here: http://lex.clansfx.co.uk/projects/wagametimecodes.d

The regex (might have to widen your mail client to see it properly):

((start|begin|enter|play(back)?)[\s_-]*)?((@|at|from)[\s_-]*)?(\d+([\.\-']|[\s_-]*|m(in(ute)?)?|[\s_-]*and[\s_-]*)*(s(ec(ond)?)?)?){1,3}
\_____________Ignore this part.__It works perfectly._________/\_______________This part is supposed to match time codes._______________/

The problematic string:

Guaton_at_9min59sec.WAgame

regextester.com matches "at_9min59sec" altogether perfectly, which is what I want to happen.
std.regex matches "at_9" and "59s", which I don't want to happen.

std.regex was matching "at_9min59s" before I changed the way it finds variations of "minute" and "second" from "[ms][inutecond]*" to its current method. It was better before. Now the numbers aren't even joined.

All in all, I'm pretty sure this is a std.regex bug, but I don't want to waste Andrei's time if it's not, since I'm not that experienced.

Reply via email to