【发布时间】:2019-08-21 09:25:13
【问题描述】:
我是一名网络工程师,使用多个版本的 Cisco IOS,需要使用多种正则表达式模式。有没有办法构建一个正则表达式模式数组?
我已经在其他各种程序中使用了正则表达式模式,但是当我开始构建这个时,我有 3 种模式格式可供搜索,毫无疑问,随着我通过我们的网络,我会添加更多。
我已经试过了:
Regex someVariable[] = new Regex();
这是我目前拥有的,并且希望将其清理到一个数组中,以便将来通过模式进行循环搜索,或者我可以根据需要单独调用它们 someVariable[0] 等。
Regex intRegex = new Regex(@"((?<!\S)[A-Za-z]{2}\d{1,5}\S+\s+)|(\s[A-Za-z]{7,15}\d{1,5}\S+\s+)", RegexOptions.Compiled);
Regex psRegex = new Regex(@", id\s+\d{10},", RegexOptions.Compiled);
Regex cidRegex = new Regex(@"\d{3}-\d{3}-\d{4}", RegexOptions.Compiled);
Regex vcidRegex = new Regex(@"vcid\s\d{10},", RegexOptions.Compiled);
我不确定我对 c# 的选择是什么,因为我以前从未使用 c# 走这条路,过去只在整个程序中使用过 1 或 2 个正则表达式搜索模式。
【问题讨论】:
-
不确定是什么问题。定义
List<Regex>,然后定义.Add,根据需要定义任意数量的正则表达式。然后,在查找匹配项时遍历它们。 -
如果您创建一个 LIst
> 并将键设为变量名,将值设为正则表达式模式,您可以通过列表进行枚举。 -
也许你可以尝试使用
Dictionary<string,Regex>,像dic.Add(key,regex)一样添加,你可以通过像dic[key]这样的键获得正则表达式。