2014-11-17 6 views
0

В C#, я получаю такие строки, как:Правильный шаблон для Regex.Split

  • ABC123456DEF
  • ABC123456
  • 123456DEF

Что я хотел бы do - это разделение чисел от строки, поэтому в идеале выход для вышеуказанного будет:

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

ли кто-то пожалуйста, может посоветовать лучший способ справиться с этим с помощью Regex.Split?

спасибо.

Paul.

EDIT:

Будучи, как я был отмечен вниз, я думал, что лучше показать, что я уже. Это приносит только буквенно-цифровые, а не числовая'S:

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 подход в другой ответ, вероятно, лучше, однако, если вы абсолютно необходимо использовать Regexp .split должен работать следующий шаблон;

(?<=[A-Z])(?=[0-9])|(?<=[0-9])(?=[A-Z]) 
Смежные вопросы