【问题标题】:RegEx "Split List"正则表达式“拆分列表”
【发布时间】:2015-06-17 20:37:36
【问题描述】:

我有这个正则表达式:[E](((\d{1,2})))[-][E]?(\d{1,2}) 我在这个字符串上使用S03E01-E03

效果很好。

当我使用regexstorm.net 来测试我的表达式时,它们会生成一个“拆分列表”,这如何在 c# 中完成?

【问题讨论】:

  • 顺便说一句,你在你的模式中使用了很多无用的符号:E\d{1,2}-E?\d{1,2} 完全一样。无需将所有内容放在字符类中或括号之间(创建无用的捕获组)
  • No E\d{1,2}-E?\d{1,2} 不会这样做,因为那样我只会得到一组,但是 [E](\d{ 1,2})[-][E]?(\d{1,2}) 可以解决问题。

标签: c# regex


【解决方案1】:

使用Regex.Split

    var regex = new Regex("[E](((\\d{1,2})))[-][E]?(\\d{1,2})");         
    var substrings = regex.Split("S03E01-E03");

这会将您的字符串拆分为 String[]。

【讨论】:

    【解决方案2】:

    使用Regex.Split()

    string regex = @"[E](((\d{1,2})))[-][E]?(\d{1,2})";
    string s = "S03E01-E03";
    
    Regex rgx = new Regex(regex);
    
    string[] splitResults = rgx.Split(s);
    
    foreach (var str in splitResults)
    {
        Console.WriteLine(str);
    }
    Console.ReadLine();
    

    【讨论】:

    • 奇怪,因为那是我第一次尝试。但因为它有效。 (我会在 7 分钟内接受你的答复)
    猜你喜欢
    • 2020-08-07
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2013-08-11
    • 2021-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多