Regex 正则表达式作为关联数组键?
我正在处理我的D代码中一个非常依赖性能的部分。为此,我希望有一个关联数组将我的数据映射到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'
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为我试图实现的目标添加了一些代码非常感谢您,这就解决了问题!被接受为答案。非常感谢,这个问题解决了!被接受为答案。