Problem with std.regex: *+? not allowed in atom

Jacob Carlborg doob at me.com
Sun Feb 27 02:41:25 PST 2011


On 2011-02-26 19:49, Dmitry Olshansky wrote:
> On 26.02.2011 19:52, Jacob Carlborg wrote:
>> On 2011-02-26 12:29, Dmitry Olshansky wrote:
>>> On 26.02.2011 14:10, Jacob Carlborg wrote:
>>>> I'm trying to use the std.regex module but when I run my application I
>>>> get an exception. The exception message says:
>>>>
>>>> *+? not allowed in atom
>>>>
>>>> The code I have is:
>>>>
>>>> import std.regex;
>>>>
>>>> void main ()
>>>> {
>>>> regex(`\.(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))`, "m");
>>>> }
>>>
>>> Well the thing is, std.regex is not quite ECMA complaint (as vaguely
>>> stated in docs). To the best of my knowledge not a single one variant of
>>> the forms (?:...) ... (?=...) is supported . Also see
>>> http://d.puremagic.com/issues/show_bug.cgi?id=5169, you may try out my
>>> patch there to support (?:...). It's a slightly outdated, but std.regex
>>> wasn't in very active development.
>>
>> I tried the patch but with no success. I still get the same error.
>>
> The patch fixes only (?: ) form and not the lookahead and others. Sorry,
> it was the only one I needed back then.
> I'll check if I can make a patch for them as well when I have some spare
> time. That's would be around monday if, of course, nobody else wishes to
> rush into the depths of std.regex.

Ok.

-- 
/Jacob Carlborg


More information about the Digitalmars-d-learn mailing list