【问题标题】:C# - Can you do an array of Regex search patterns? [duplicate]C# - 你能做一组正则表达式搜索模式吗? [复制]
【发布时间】: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&lt;Regex&gt;,然后定义.Add,根据需要定义任意数量的正则表达式。然后,在查找匹配项时遍历它们。
  • 如果您创建一个 LIst> 并将键设为变量名,将值设为正则表达式模式,您可以通过列表进行枚举。
  • 也许你可以尝试使用Dictionary&lt;string,Regex&gt;,像dic.Add(key,regex)一样添加,你可以通过像dic[key]这样的键获得正则表达式。

标签: c# arrays regex


【解决方案1】:

试试这个

    Regex[] regexCollection = new Regex[4];

    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);

    regexCollection[0] = intRegex;
    regexCollection[1] = psRegex;
    regexCollection[2] = intRegex;
    regexCollection[3] = vcidRegex;

【讨论】:

  • 老实说,我对 C# 很陌生,我不知道。感谢您的语法帮助。我会给它一个构建/测试。感谢您的宝贵时间。
  • 必须对其进行测试 - 这完全符合我的程序设计所需,所以只是想再次感谢您并让您知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2017-12-01
  • 1970-01-01
  • 2012-12-31
  • 2012-02-02
  • 1970-01-01
相关资源
最近更新 更多