std.regex bug? My regex doesn't match what it's supposed to.
Alex Folland
lexlexlex at gmail.com
Thu Feb 3 08:08:41 PST 2011
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;
}
More information about the Digitalmars-d-learn
mailing list