std.regex bug? My regex doesn't match what it's supposed to.

Stanislav Blinov blinov at loniir.ru
Thu Feb 3 08:45:39 PST 2011


03.02.2011 19:08, Alex Folland пишет:
> On 2011-02-03 10:21, Stanislav Blinov wrote:
>> 03.02.2011 18:03, Alex Folland пишет:
>>> I figured out the bug. Inside a set of square brackets, \s doesn't
>>> match whitespace. It matches s instead. I'm uncertain exactly how the
>>> ECMA-262 part 15.10 regular expression specification is meant to
>>> handle that situation.
>> It does match for me:
>>
>> foreach(m; match("a b c d e", regex("[a-z][\\s]?")))
>> {
>> writefln("%s[%s]%s", m.pre, m.hit, m.post);
>> }
>
> Okay, now actually try the test I suggested.  I found it was working 
> in other sections too, but not in this test which has another "s" 
> section it's supposed to look for.
>
> Since it's broken, you'll see 2 matches instead of 1.
>
> module main;
>
> import std.stdio,std.regex;
>
> void main()
> {
>   foreach(m; match("9min59sec24", 
> regex(`(\d+([\s_]|and|m(in(ute)?s?)?|s(ec(ond)?s?)?)*){1,3}`, "gi")))
>     writefln("%s[%s]%s", m.pre, m.hit, m.post);
>   return;
>

Oh, yes, I see it now.


More information about the Digitalmars-d-learn mailing list