2014-11-17 45 views
0

在C#中,我收到的字符串,如:正确的模式来Regex.Split

  • ABC123456DEF
  • ABC123456
  • 123456DEF

我想什么do是将字符串中的数字分开,因此理想情况下上述输出为:

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

会有人请能够建议使用Regex.Split处理此问题的最佳方法?

谢谢。

Paul。

编辑:

正在为我打上了下来,我想我更好地展示我有什么了。这不仅带来了字母数字的,而不是数字的:

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

你正在运行哪种语言? –

+0

对不起,C#。我会修改这个问题。 – paulpitchford

+0

为什么你不尝试匹配而不是分裂? '[A-Z] + | [0-9] +' –

回答

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); 
     } 
    } 
} 
+0

这确实很好。感谢您的输入! – paulpitchford

0

在其他答案的Regexp.match方法可能更好,但是如果你绝对必须使用正则表达式。应该打破以下模式;

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