正确的Regex.Split模式

时间:2014-11-17 12:01:25

标签: c# regex

在C#中,我接收的字符串如下:

  • ABC123456DEF
  • 123456
  • ABC123456
  • 123456DEF

我想要做的是从字符串中分割数字,理想情况下,上面的输出将是:

  • ' ABC',' 123456',' DEF
  • ' 123456'
  • ' ABC',' 123456'
  • ' 123456',' DEF'

有人可以使用Regex.Split建议处理此问题的最佳方法吗?

谢谢。

保罗。

编辑:

当我被标记下来时,我想我会更好地展示我已经拥有的东西。这只会带来字母数字,而不是数字&#39>:

string pattern = @"\d+";
string barcode = "ABC123456DEF";
string[] result = Regex.Split(barcode, pattern);

3 个答案:

答案 0 :(得分:3)

试试这个:

//Based on:

//.NET 4.5

//Program that uses Match, Regex: C#

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        String subject = "ABC123456DEF\n123456\nABC123456\n123456DEF"
        Regex regex = new Regex(@"([a-zA-Z]+)|([0-9]+)");
        foreach (Match match in regex.Matches(subject))
        {
            MessageBox.Show(match.Value);
        }
    }
}

答案 1 :(得分:1)

Regex.Split正是你应该在这里使用的:

using System.Text.RegularExpressions;
using System.Linq;

string pattern = @"(\d+)";
string barcode = "ABC123456DEF";
string[] result = Regex.Split(barcode, pattern).Where(s => !string.IsNullOrEmpty(s)).ToArray();

答案 2 :(得分:0)

另一个答案中的Regexp.match方法可能更好,但是如果您必须使用Regexp.split,则以下模式应该有效;

(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z])