Regex 正则表达式作为关联数组键?

Regex 正则表达式作为关联数组键?,regex,d,associative-array,Regex,D,Associative Array,我正在处理我的D代码中一个非常依赖性能的部分。为此,我希望有一个关联数组将我的数据映射到Regex,以便以后使用它 当我尝试这样做时,它给出了一个错误,索引不是类型或表达式。如何使用此正则表达式作为数组键 编辑:对于代码,以下是我试图在类中定义的内容: View[Regex] m_routes; 我希望这样做,以便我可以添加如下路线: void add(string route, View view) { auto regex = regex(route.key, [ 'g', 'i'

我正在处理我的D代码中一个非常依赖性能的部分。为此,我希望有一个关联数组将我的数据映射到
Regex
,以便以后使用它

当我尝试这样做时,它给出了一个错误,
索引不是类型或表达式。如何使用此正则表达式作为数组键

编辑:对于代码,以下是我试图在类中定义的内容:

View[Regex] m_routes;
我希望这样做,以便我可以添加如下路线:

void add(string route, View view)
{
    auto regex = regex(route.key, [ 'g', 'i' ]);

    if (regex in m_routes)
        throw new Exception(format(`Route with path, "%s", is already assigned!`, route));

    m_routes[regex] = view;
}
这样,我就可以根据路由检查正则表达式,而不必重新构建每个路由,如下方法所示:

View check(string resource)
{
    foreach (route; m_routes.byKeyValue())
    {
        auto match = matchAll(resource, route.key);

        // If this regex is a match
        // return the view
        if (!match.empty)
        {
            return route.value;
        }
    }

    return null;
}

任何帮助都将不胜感激,谢谢

看来std.regex.regex是一个接受类型参数的别名:

(摘自2.071.0版标准regex.package第289行)

换句话说,您需要为正则表达式指定字符类型。对于
string
,这应该是
char

View[Regex!char] m_routes;

似乎std.regex.regex是一个接受类型参数的别名:

(摘自2.071.0版标准regex.package第289行)

换句话说,您需要为正则表达式指定字符类型。对于
string
,这应该是
char

View[Regex!char] m_routes;

如果您提供一些显示问题的示例代码,将更容易帮助您。@JonathanMDavis为我试图实现的目标添加了一些代码。如果您提供一些显示问题的示例代码,将更容易帮助您。@JonathanMDavis为我试图实现的目标添加了一些代码非常感谢您,这就解决了问题!被接受为答案。非常感谢,这个问题解决了!被接受为答案。