Regex driving me nuts

Bart Bart at gmail.com
Mon Jun 17 08:23:53 UTC 2019


Error: static variable `thompsonFactory` cannot be read at 
compile time, Trying to regex an import file.

Also I have a group (...)* and it always fails or matches only 
one but if I do (...)(...)(...) it matches all 3(fails if more or 
less of course. ... is the regex).

Also when I ignore a group (?:Text) I get Text as a matched group 
;/

But all this is irrelevant if I can't get the code to work at 
compile time. I tried ctRegex





// A workaround for R-T enum re = regex(...)
template defaultFactory(Char)
{
     @property MatcherFactory!Char defaultFactory(const ref 
Regex!Char re) @safe
     {
         import std.regex.internal.backtracking : 
BacktrackingMatcher;
         import std.regex.internal.thompson : ThompsonMatcher;
         import std.algorithm.searching : canFind;
         static MatcherFactory!Char backtrackingFactory;
         static MatcherFactory!Char thompsonFactory;
         if (re.backrefed.canFind!"a != 0")
         {
             if (backtrackingFactory is null)
                 backtrackingFactory = new 
RuntimeFactory!(BacktrackingMatcher, Char);
             return backtrackingFactory;
         }
         else
         {
             if (thompsonFactory is null)
                 thompsonFactory = new 
RuntimeFactory!(ThompsonMatcher, Char);
             return thompsonFactory;
         }
     }
}

The workaround seems to workaround working.


More information about the Digitalmars-d-learn mailing list