Yet another unimplemted corner of ctRegex.
Some test cases, basically the same full unrestricted lookahead must be supported.
import std.algorithm, std.regex;
void main()
{
auto c1 = ctRegex!("a(?=bc)b");
assert("abc".match(c1).equal!equal([["ab"]]));
assert("ab".match(c1).empty);
auto c2 = ctRegex!("a(?![a-z]*!)b");
assert("ab".match(c2).equal!equal([["ab"]]));
assert("ab!".match(c2).empty);
assert("abcd!".match(c2).empty);
assert("abcd5!".match(c2).equal!equal([["ab"]]));
}